From a18479e721a3e4a0e0865d0493efdcd8c10528cc Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 28 Feb 2023 18:24:28 -0500 Subject: [PATCH] Reducing the need to start/stop home and chatroom lists to see if performance increases --- .../vitorpamplona/amethyst/ServiceManager.kt | 1 - .../amethyst/service/NostrDataSource.kt | 2 + .../amethyst/service/NostrGlobalDataSource.kt | 1 - .../ui/note/NIP05VerificationDisplay.kt | 3 +- .../ui/screen/loggedIn/ChatroomListScreen.kt | 46 ++----------------- .../amethyst/ui/screen/loggedIn/HomeScreen.kt | 21 --------- 6 files changed, 7 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt b/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt index bbdac446c..a0cb5de2f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ServiceManager.kt @@ -33,7 +33,6 @@ object ServiceManager { NostrAccountDataSource.account = myAccount NostrHomeDataSource.account = myAccount NostrChatroomListDataSource.account = myAccount - NostrGlobalDataSource.account = myAccount // Notification Elements NostrAccountDataSource.start() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt index 8f8a66a07..10ac931bf 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrDataSource.kt @@ -123,10 +123,12 @@ abstract class NostrDataSource(val debugName: String) { } open fun start() { + println("DataSource: ${this.javaClass.simpleName} Start") resetFilters() } open fun stop() { + println("DataSource: ${this.javaClass.simpleName} Stop") subscriptions.values.forEach { channel -> Client.close(channel.id) channel.typedFilters = null diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGlobalDataSource.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGlobalDataSource.kt index bd3ec6073..6dbd4cba7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGlobalDataSource.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/NostrGlobalDataSource.kt @@ -8,7 +8,6 @@ import nostr.postr.JsonFilter import nostr.postr.events.TextNoteEvent object NostrGlobalDataSource: NostrDataSource("GlobalFeed") { - lateinit var account: Account fun createGlobalFilter() = TypedFilter( types = setOf(FeedType.GLOBAL), filter = JsonFilter( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt index b251f5015..f418786d5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NIP05VerificationDisplay.kt @@ -94,7 +94,8 @@ fun ObserveDisplayNip05Status(baseUser: User) { user.nip05()?.let { nip05 -> if (nip05.split("@").size == 2) { - val nip05Verified by nip05VerificationAsAState(user.info!!, user.pubkeyHex) + + val nip05Verified by nip05VerificationAsAState(user.info!!, user.pubkeyHex) Row(verticalAlignment = Alignment.CenterVertically) { if (nip05.split("@")[0] != "_") Text( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt index 0501d9b36..e6e9bceaf 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ChatroomListScreen.kt @@ -87,31 +87,11 @@ fun TabKnown(accountViewModel: AccountViewModel, navController: NavController) { ChatroomListKnownFeedFilter.account = account val feedViewModel: NostrChatroomListKnownFeedViewModel = viewModel() - LaunchedEffect(Unit) { + LaunchedEffect(accountViewModel) { NostrChatroomListDataSource.resetFilters() feedViewModel.invalidateData() } - val lifeCycleOwner = LocalLifecycleOwner.current - DisposableEffect(accountViewModel) { - val observer = LifecycleEventObserver { source, event -> - if (event == Lifecycle.Event.ON_RESUME) { - println("Chatroom List Start") - NostrChatroomListDataSource.start() - feedViewModel.invalidateData() - } - if (event == Lifecycle.Event.ON_PAUSE) { - println("Chatroom List Stop") - NostrChatroomListDataSource.stop() - } - } - - lifeCycleOwner.lifecycle.addObserver(observer) - onDispose { - lifeCycleOwner.lifecycle.removeObserver(observer) - } - } - Column(Modifier.fillMaxHeight()) { Column( modifier = Modifier.padding(vertical = 0.dp) @@ -129,29 +109,9 @@ fun TabNew(accountViewModel: AccountViewModel, navController: NavController) { ChatroomListNewFeedFilter.account = account val feedViewModel: NostrChatroomListNewFeedViewModel = viewModel() - LaunchedEffect(Unit) { + LaunchedEffect(accountViewModel) { NostrChatroomListDataSource.resetFilters() - feedViewModel.refresh() // refresh view - } - - val lifeCycleOwner = LocalLifecycleOwner.current - DisposableEffect(accountViewModel) { - val observer = LifecycleEventObserver { source, event -> - if (event == Lifecycle.Event.ON_RESUME) { - println("Chatroom List Start") - NostrChatroomListDataSource.start() - feedViewModel.invalidateData() - } - if (event == Lifecycle.Event.ON_PAUSE) { - println("Chatroom List Stop") - NostrChatroomListDataSource.stop() - } - } - - lifeCycleOwner.lifecycle.addObserver(observer) - onDispose { - lifeCycleOwner.lifecycle.removeObserver(observer) - } + feedViewModel.invalidateData() // refresh view } Column(Modifier.fillMaxHeight()) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt index 526b8dd93..10c4a6b4e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/HomeScreen.kt @@ -56,27 +56,6 @@ fun HomeScreen(accountViewModel: AccountViewModel, navController: NavController) feedViewModelReplies.invalidateData() } - val lifeCycleOwner = LocalLifecycleOwner.current - DisposableEffect(accountViewModel) { - val observer = LifecycleEventObserver { source, event -> - if (event == Lifecycle.Event.ON_RESUME) { - println("Home Start") - NostrHomeDataSource.start() - feedViewModel.invalidateData() - feedViewModelReplies.invalidateData() - } - if (event == Lifecycle.Event.ON_PAUSE) { - println("Home Stop") - NostrHomeDataSource.stop() - } - } - - lifeCycleOwner.lifecycle.addObserver(observer) - onDispose { - lifeCycleOwner.lifecycle.removeObserver(observer) - } - } - Column(Modifier.fillMaxHeight()) { Column( modifier = Modifier.padding(vertical = 0.dp)