From 3cdc77a277b317ccc3708e95d6bb9a9ed111d752 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 24 Feb 2023 17:23:17 -0500 Subject: [PATCH] BugFix Loading one thread after another crashed the app --- .../com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt | 4 ++++ .../com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt | 4 +++- .../vitorpamplona/amethyst/ui/screen/loggedIn/ThreadScreen.kt | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt index d7a0c9d9c..05bafe661 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/FeedViewModel.kt @@ -50,6 +50,10 @@ abstract class FeedViewModel(val localFilter: FeedFilter): ViewModel() { return localFilter.loadTop() } + fun clearFeed() { + _feedContent.update { FeedState.Loading } + } + fun refresh() { val scope = CoroutineScope(Job() + Dispatchers.Default) scope.launch { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt index f499c84b9..1cfc40541 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt @@ -80,7 +80,9 @@ fun ThreadFeedView(noteId: String, viewModel: FeedViewModel, accountViewModel: A is FeedState.Loaded -> { LaunchedEffect(noteId) { val noteForPosition = state.feed.value.filter { it.idHex == noteId}.firstOrNull() - listState.animateScrollToItem(state.feed.value.indexOf(noteForPosition), 0) + val position = state.feed.value.indexOf(noteForPosition) + if (position > 0) + listState.animateScrollToItem(position, 0) } LazyColumn( 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 0669ba6e0..56f3d0eb1 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 @@ -28,7 +28,8 @@ fun ThreadScreen(noteId: String?, accountViewModel: AccountViewModel, navControl if (account != null && noteId != null) { val feedViewModel: NostrThreadFeedViewModel = viewModel() - LaunchedEffect(Unit) { + LaunchedEffect(noteId) { + feedViewModel.clearFeed() ThreadFeedFilter.loadThread(noteId) NostrThreadDataSource.loadThread(noteId) feedViewModel.invalidateData()