From 909c704bda4f68efb41570c352cd197bb19f4fcf Mon Sep 17 00:00:00 2001 From: KotlinGeekDev Date: Mon, 18 Aug 2025 17:21:26 +0100 Subject: [PATCH] Improved version of NostrUserListFeedViewModel. Remove unneeded LaunchedEffect in CustomListsScreen. --- .../ui/screen/loggedIn/lists/CustomListsScreen.kt | 5 ----- .../loggedIn/lists/NostrUserListFeedViewModel.kt | 14 ++++++++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/CustomListsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/CustomListsScreen.kt index 016e73831..09ca538f8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/CustomListsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/CustomListsScreen.kt @@ -41,7 +41,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -101,10 +100,6 @@ fun ListsScreen( val followSetsFlow by followSetsViewModel.feedContent.collectAsStateWithLifecycle() - LaunchedEffect(followSetsFlow) { - followSetsViewModel.invalidateData() - } - // TODO: Replace this with nav-based solution. val isFollowSetSelected = remember { mutableStateOf(false) } val selectedFollowList = remember { mutableStateOf(null) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/NostrUserListFeedViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/NostrUserListFeedViewModel.kt index 484da3e3f..522073fd9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/NostrUserListFeedViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/NostrUserListFeedViewModel.kt @@ -46,6 +46,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.util.UUID // TODO Update: Rename this to be used only for follow sets, and create separate VMs for bookmark sets, etc. @@ -62,12 +63,12 @@ class NostrUserListFeedViewModel( } } - fun getFollowSetNote( + suspend fun getFollowSetNote( noteIdentifier: String, account: Account, ): AddressableNote? { checkNotInMainThread() - val potentialNote = account.userProfile().followSetNotes.find { it.dTag() == noteIdentifier } + val potentialNote = account.getFollowSetNotes().find { it.dTag() == noteIdentifier } return potentialNote } @@ -77,9 +78,7 @@ class NostrUserListFeedViewModel( ): Boolean { checkNotInMainThread() val potentialNote = - account - .userProfile() - .followSetNotes + runBlocking(viewModelScope.coroutineContext) { account.getFollowSetNotes() } .find { (it.event as PeopleListEvent).nameOrTitle() == setName } return potentialNote != null } @@ -264,6 +263,9 @@ class NostrUserListFeedViewModel( class Factory( val account: Account, ) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T = NostrUserListFeedViewModel(FollowSetFeedFilter(account)) as T + override fun create(modelClass: Class): T = + NostrUserListFeedViewModel( + FollowSetFeedFilter(account), + ) as T } }