From e1c134830ee63585a88752380a98a46e60e06662 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 4 Apr 2024 10:03:28 -0400 Subject: [PATCH] Avoiding feed jitter when pressing the notification button twice. --- .../com/vitorpamplona/amethyst/model/Account.kt | 13 ------------- .../amethyst/ui/screen/CardFeedViewModel.kt | 4 ++-- .../amethyst/ui/screen/loggedIn/MainScreen.kt | 2 +- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index f0cd8d162..ce6ec355a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -240,11 +240,7 @@ class Account( @OptIn(ExperimentalCoroutinesApi::class) private val liveHomeList: Flow by lazy { defaultHomeFollowList.flatMapLatest { listName -> - println("AABBCC liveHomeList $listName changed") loadPeopleListFlowFromListName(listName) - }.transformLatest { - println("AABBCC liveHomeList after FlattenMerge") - emit(it) } } @@ -252,12 +248,8 @@ class Account( fun loadPeopleListFlowFromListName(listName: String): Flow { return if (listName != GLOBAL_FOLLOWS && listName != KIND3_FOLLOWS) { val note = LocalCache.checkGetOrCreateAddressableNote(listName) - println("AABBCC loadPeopleListFlowFromListName $listName ${note?.idHex} ${note?.flow()?.metadata?.stateFlow?.subscriptionCount?.value}") - note?.flow()?.metadata?.stateFlow?.mapLatest { - println("AABBCC loadPeopleListFlowFromListName running") val noteEvent = it.note.event as? GeneralListEvent - println("AABBCC loadPeopleListFlowFromListName emitting ${noteEvent?.id}") ListNameNotePair(listName, noteEvent) } ?: MutableStateFlow(ListNameNotePair(listName, null)) } else { @@ -271,19 +263,14 @@ class Account( ): Flow { return combineTransform(kind3FollowsSource, peopleListFollowsSource) { kind3Follows, peopleListFollows -> if (peopleListFollows.listName == GLOBAL_FOLLOWS) { - println("AABBCC combinePeopleListFlows ${peopleListFollows.listName} Global") emit(null) } else if (peopleListFollows.listName == KIND3_FOLLOWS) { - println("AABBCC combinePeopleListFlows ${peopleListFollows.listName} Kind 3") emit(kind3Follows) } else if (peopleListFollows.event == null) { - println("AABBCC combinePeopleListFlows ${peopleListFollows.listName} Note is null") emit(LiveFollowLists()) } else { - println("AABBCC combinePeopleListFlows ${peopleListFollows.listName} ${peopleListFollows.event.id}") val result = waitToDecrypt(peopleListFollows.event) if (result == null) { - println("AABBCC combinePeopleListFlows ${peopleListFollows.listName} returning null") emit(LiveFollowLists()) } else { emit(result) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt index d8d96c06b..ab8054ce9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt @@ -367,9 +367,9 @@ open class CardFeedViewModel(val localFilter: FeedFilter) : ViewModel(), I } } - fun invalidateDataAndSendToTop() { + fun invalidateDataAndSendToTop(ignoreIfDoing: Boolean) { clear() - bundler.invalidate(false) { + bundler.invalidate(ignoreIfDoing) { // adds the time to perform the refresh into this delay // holding off new updates in case of heavy refresh routines. val (value, elapsed) = diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt index 44c613ee2..c04eb1a56 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/MainScreen.kt @@ -276,7 +276,7 @@ fun MainScreen( discoveryChatFeedViewModel.sendToTop() } Route.Notification.base -> { - notifFeedViewModel.invalidateDataAndSendToTop() + notifFeedViewModel.invalidateDataAndSendToTop(true) } }