From 80bede648f124a4c173539105983d46350b8a1fe Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 12 Feb 2023 21:53:22 -0500 Subject: [PATCH] Moving the ThreadView to the same Model as Global: Only active when using this view. --- .../vitorpamplona/amethyst/ServiceManager.kt | 2 +- .../ui/screen/loggedIn/ThreadScreen.kt | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt b/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt index 3bd5bb851..87a632f43 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt @@ -51,7 +51,7 @@ object ServiceManager { NostrSingleEventDataSource.start() NostrSingleChannelDataSource.start() NostrSingleUserDataSource.start() - NostrThreadDataSource.start() + //NostrThreadDataSource.start() NostrChatroomListDataSource.start() } else { // if not logged in yet, start a basic service wit default relays diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ThreadScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ThreadScreen.kt index 96a095e97..93bd883e1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ThreadScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ThreadScreen.kt @@ -8,19 +8,40 @@ import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.unit.dp +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController import com.vitorpamplona.amethyst.service.NostrThreadDataSource +import com.vitorpamplona.amethyst.service.NostrUserProfileDataSource +import com.vitorpamplona.amethyst.service.NostrUserProfileFollowersDataSource +import com.vitorpamplona.amethyst.service.NostrUserProfileFollowsDataSource +import com.vitorpamplona.amethyst.service.NostrUserProfileZapsDataSource import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel @Composable fun ThreadScreen(noteId: String?, accountViewModel: AccountViewModel, navController: NavController) { val account by accountViewModel.accountLiveData.observeAsState() - DisposableEffect(account) { + val lifeCycleOwner = LocalLifecycleOwner.current + + DisposableEffect(accountViewModel) { + val observer = LifecycleEventObserver { source, event -> + if (event == Lifecycle.Event.ON_RESUME) { + println("Thread Start") + NostrThreadDataSource.start() + } + if (event == Lifecycle.Event.ON_PAUSE) { + println("Thread Stop") + NostrThreadDataSource.stop() + } + } + + lifeCycleOwner.lifecycle.addObserver(observer) onDispose { - NostrThreadDataSource.stop() + lifeCycleOwner.lifecycle.removeObserver(observer) } }