Removes the list view model from the LoginPage

This commit is contained in:
Vitor Pamplona
2025-09-23 13:26:04 -04:00
parent b30d87266d
commit d8c403d3d5
5 changed files with 58 additions and 14 deletions
@@ -79,7 +79,6 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.hashtag.HashtagScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.HomeScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.ShortNotePostScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.ListsAndSetsScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.NostrUserListFeedViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.followsets.FollowSetScreen
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.followsets.FollowSetsManagementDialog
import com.vitorpamplona.amethyst.ui.screen.loggedIn.notifications.NotificationScreen
@@ -110,7 +109,6 @@ import java.net.URI
fun AppNavigation(
accountViewModel: AccountViewModel,
accountStateViewModel: AccountStateViewModel,
listsViewModel: NostrUserListFeedViewModel,
) {
val nav = rememberNav()
@@ -127,12 +125,12 @@ fun AppNavigation(
composable<Route.Discover> { DiscoverScreen(accountViewModel, nav) }
composable<Route.Notification> { NotificationScreen(accountViewModel, nav) }
composableFromEnd<Route.Lists> { ListsAndSetsScreen(accountViewModel, listsViewModel, nav) }
composableFromEnd<Route.Lists> { ListsAndSetsScreen(accountViewModel, nav) }
composableArgs<Route.FollowSetRoute> {
FollowSetScreen(it.setIdentifier, accountViewModel, listsViewModel, nav)
FollowSetScreen(it.setIdentifier, accountViewModel, nav)
}
composableArgs<Route.FollowSetManagement> {
FollowSetsManagementDialog(it.userHexKey, accountViewModel.account, listsViewModel, nav)
FollowSetsManagementDialog(it.userHexKey, accountViewModel, nav)
}
composable<Route.EditProfile> { NewUserMetadataScreen(nav, accountViewModel) }
@@ -50,7 +50,6 @@ import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.rooms.datasource.ChatroomListFilterAssemblerSubscription
import com.vitorpamplona.amethyst.ui.screen.loggedIn.discover.datasource.DiscoveryFilterAssemblerSubscription
import com.vitorpamplona.amethyst.ui.screen.loggedIn.home.datasource.HomeFilterAssemblerSubscription
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.NostrUserListFeedViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.video.datasource.VideoFilterAssemblerSubscription
import com.vitorpamplona.quartz.nip55AndroidSigner.client.IActivityLauncher
import com.vitorpamplona.quartz.utils.Log
@@ -75,12 +74,6 @@ fun LoggedInPage(
),
)
val listsViewModel: NostrUserListFeedViewModel =
viewModel(
key = "NostrUserListFeedViewModel",
factory = NostrUserListFeedViewModel.Factory(accountViewModel.account),
)
accountViewModel.firstRoute = route
// Adds this account to the authentication procedures for relays.
@@ -107,7 +100,6 @@ fun LoggedInPage(
AppNavigation(
accountViewModel = accountViewModel,
accountStateViewModel = accountStateViewModel,
listsViewModel = listsViewModel,
)
}
@@ -58,6 +58,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.layouts.DisappearingScaffold
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
@@ -74,7 +75,25 @@ import kotlinx.coroutines.launch
@Composable
fun ListsAndSetsScreen(
accountViewModel: AccountViewModel,
nav: INav,
) {
val followSetsViewModel: NostrUserListFeedViewModel =
viewModel(
key = "NostrUserListFeedViewModel",
factory = NostrUserListFeedViewModel.Factory(accountViewModel.account),
)
ListsAndSetsScreen(
followSetsViewModel,
accountViewModel,
nav,
)
}
@Composable
fun ListsAndSetsScreen(
followSetsViewModel: NostrUserListFeedViewModel,
accountViewModel: AccountViewModel,
nav: INav,
) {
val lifeCycleOwner = LocalLifecycleOwner.current
@@ -60,6 +60,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.ui.components.ClickableBox
@@ -83,7 +84,23 @@ import kotlinx.coroutines.launch
fun FollowSetScreen(
selectedSetIdentifier: String,
accountViewModel: AccountViewModel,
navigator: INav,
) {
val followSetViewModel: NostrUserListFeedViewModel =
viewModel(
key = "NostrUserListFeedViewModel",
factory = NostrUserListFeedViewModel.Factory(accountViewModel.account),
)
FollowSetScreen(selectedSetIdentifier, followSetViewModel, accountViewModel, navigator)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FollowSetScreen(
selectedSetIdentifier: String,
followSetViewModel: NostrUserListFeedViewModel,
accountViewModel: AccountViewModel,
navigator: INav,
) {
val followSetState by followSetViewModel.feedContent.collectAsState()
@@ -74,11 +74,13 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.FollowSetState
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.ListVisibility
import com.vitorpamplona.amethyst.ui.screen.loggedIn.lists.NewSetCreationDialog
@@ -92,8 +94,24 @@ import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
@Composable
fun FollowSetsManagementDialog(
userHex: String,
account: Account,
accountViewModel: AccountViewModel,
navigator: INav,
) {
val followSetViewModel: NostrUserListFeedViewModel =
viewModel(
key = "NostrUserListFeedViewModel",
factory = NostrUserListFeedViewModel.Factory(accountViewModel.account),
)
FollowSetsManagementDialog(userHex, followSetViewModel, accountViewModel.account, navigator)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FollowSetsManagementDialog(
userHex: String,
followSetsViewModel: NostrUserListFeedViewModel,
account: Account,
navigator: INav,
) {
val followSetsState by followSetsViewModel.feedContent.collectAsState()