From cb3b898e294390193f2d6649690818636ebec3e2 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 12 Aug 2023 21:33:29 -0400 Subject: [PATCH] Moves the creation of the TopBar livedata for lists into the AccountViewModel --- .../amethyst/ui/navigation/AppTopBar.kt | 16 ++++------------ .../ui/screen/loggedIn/AccountViewModel.kt | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt index efdfbc511..f5dcb29a1 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/navigation/AppTopBar.kt @@ -209,9 +209,7 @@ fun NoTopBar() { @Composable fun StoriesTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState, accountViewModel: AccountViewModel, nav: (String) -> Unit) { GenericTopBar(scaffoldState, accountViewModel, nav) { accountViewModel -> - val list by accountViewModel.accountLiveData.map { - it.account.defaultStoriesFollowList - }.observeAsState(GLOBAL_FOLLOWS) + val list by accountViewModel.storiesListLiveData.observeAsState(GLOBAL_FOLLOWS) FollowList( followLists, @@ -226,9 +224,7 @@ fun StoriesTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState @Composable fun HomeTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState, accountViewModel: AccountViewModel, nav: (String) -> Unit) { GenericTopBar(scaffoldState, accountViewModel, nav) { accountViewModel -> - val list by accountViewModel.accountLiveData.map { - it.account.defaultHomeFollowList - }.observeAsState(KIND3_FOLLOWS) + val list by accountViewModel.homeListLiveData.observeAsState(KIND3_FOLLOWS) FollowList( followLists, @@ -243,9 +239,7 @@ fun HomeTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState, a @Composable fun NotificationTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState, accountViewModel: AccountViewModel, nav: (String) -> Unit) { GenericTopBar(scaffoldState, accountViewModel, nav) { accountViewModel -> - val list by accountViewModel.accountLiveData.map { - it.account.defaultNotificationFollowList - }.observeAsState(GLOBAL_FOLLOWS) + val list by accountViewModel.notificationListLiveData.observeAsState(GLOBAL_FOLLOWS) FollowList( followLists, @@ -260,9 +254,7 @@ fun NotificationTopBar(followLists: FollowListViewModel, scaffoldState: Scaffold @Composable fun DiscoveryTopBar(followLists: FollowListViewModel, scaffoldState: ScaffoldState, accountViewModel: AccountViewModel, nav: (String) -> Unit) { GenericTopBar(scaffoldState, accountViewModel, nav) { accountViewModel -> - val list by accountViewModel.accountLiveData.map { - it.account.defaultDiscoveryFollowList - }.observeAsState(GLOBAL_FOLLOWS) + val list by accountViewModel.discoveryListLiveData.observeAsState(GLOBAL_FOLLOWS) FollowList( followLists, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt index dd7c9a720..46061487e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/AccountViewModel.kt @@ -4,10 +4,12 @@ import android.content.Context import android.content.Intent import android.net.Uri import androidx.compose.runtime.Stable +import androidx.compose.runtime.getValue import androidx.core.content.ContextCompat import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.map import androidx.lifecycle.viewModelScope import com.vitorpamplona.amethyst.R @@ -43,6 +45,22 @@ class AccountViewModel(val account: Account) : ViewModel() { val userFollows: LiveData = account.userProfile().live().follows.map { it } val userRelays: LiveData = account.userProfile().live().relays.map { it } + val discoveryListLiveData = accountLiveData.map { + it.account.defaultDiscoveryFollowList + }.distinctUntilChanged() + + val homeListLiveData = accountLiveData.map { + it.account.defaultHomeFollowList + }.distinctUntilChanged() + + val notificationListLiveData = accountLiveData.map { + it.account.defaultNotificationFollowList + }.distinctUntilChanged() + + val storiesListLiveData = accountLiveData.map { + it.account.defaultStoriesFollowList + }.distinctUntilChanged() + fun updateAutomaticallyStartPlayback( automaticallyStartPlayback: ConnectivityType ) {