Replace collectAsState() by collectAsStateWithLifecycle() everywhere

This commit is contained in:
Shinokuni 2023-08-20 17:54:56 +02:00
parent dab044d313
commit 698abfe32b
5 changed files with 22 additions and 18 deletions

View File

@ -108,4 +108,8 @@ dependencies {
implementation "io.coil-kt:coil-compose:2.4.0" implementation "io.coil-kt:coil-compose:2.4.0"
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4" androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1"
implementation "androidx.lifecycle:lifecycle-runtime-compose:2.6.1"
} }

View File

@ -11,10 +11,10 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
import cafe.adriel.voyager.navigator.tab.Tab import cafe.adriel.voyager.navigator.tab.Tab
@ -27,8 +27,8 @@ object AccountTab : Tab {
override val options: TabOptions override val options: TabOptions
@Composable @Composable
get() = TabOptions( get() = TabOptions(
index = 3u, index = 3u,
title = "Account" title = "Account"
) )
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@ -36,24 +36,24 @@ object AccountTab : Tab {
override fun Content() { override fun Content() {
val navigator = LocalNavigator.currentOrThrow val navigator = LocalNavigator.currentOrThrow
val viewModel = getViewModel<AccountViewModel>() val viewModel = getViewModel<AccountViewModel>()
val closeHome by viewModel.closeHome.collectAsState() val closeHome by viewModel.closeHome.collectAsStateWithLifecycle()
if (closeHome) { if (closeHome) {
navigator.replaceAll(AccountSelectionScreen()) navigator.replaceAll(AccountSelectionScreen())
} }
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar(title = { Text(text = "Account") }) TopAppBar(title = { Text(text = "Account") })
} }
) { paddingValues -> ) { paddingValues ->
Column( Column(
modifier = Modifier.padding(paddingValues) modifier = Modifier.padding(paddingValues)
) { ) {
Row { Row {
Button(onClick = { viewModel.deleteAccount() }) { Button(onClick = { viewModel.deleteAccount() }) {
Text( Text(
text = "Delete" text = "Delete"
) )
} }
@ -61,7 +61,7 @@ object AccountTab : Tab {
Button(onClick = { navigator.push(AccountSelectionScreen()) }) { Button(onClick = { navigator.push(AccountSelectionScreen()) }) {
Text( Text(
text = "New" text = "New"
) )
} }
} }

View File

@ -10,12 +10,12 @@ import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.androidx.AndroidScreen import cafe.adriel.voyager.androidx.AndroidScreen
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
@ -30,7 +30,7 @@ class AccountSelectionScreen : AndroidScreen() {
@Composable @Composable
override fun Content() { override fun Content() {
val viewModel = getViewModel<AccountSelectionViewModel>() val viewModel = getViewModel<AccountSelectionViewModel>()
val navState by viewModel.navState.collectAsState() val navState by viewModel.navState.collectAsStateWithLifecycle()
val navigator = LocalNavigator.currentOrThrow val navigator = LocalNavigator.currentOrThrow
Column( Column(

View File

@ -14,7 +14,6 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -22,6 +21,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.tab.Tab import cafe.adriel.voyager.navigator.tab.Tab
import cafe.adriel.voyager.navigator.tab.TabOptions import cafe.adriel.voyager.navigator.tab.TabOptions
import org.koin.androidx.compose.getViewModel import org.koin.androidx.compose.getViewModel
@ -41,7 +41,7 @@ object FeedTab : Tab {
val viewModel = getViewModel<FeedViewModel>() val viewModel = getViewModel<FeedViewModel>()
var showDialog by remember { mutableStateOf(false) } var showDialog by remember { mutableStateOf(false) }
val state by viewModel.feedsState.collectAsState() val state by viewModel.feedsState.collectAsStateWithLifecycle()
if (showDialog) { if (showDialog) {
AddFeedDialog( AddFeedDialog(

View File

@ -26,11 +26,11 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.rememberDrawerState import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
import cafe.adriel.voyager.navigator.tab.Tab import cafe.adriel.voyager.navigator.tab.Tab
@ -60,9 +60,9 @@ object TimelineTab : Tab {
override fun Content() { override fun Content() {
val viewModel = getViewModel<TimelineViewModel>() val viewModel = getViewModel<TimelineViewModel>()
val state by viewModel.timelineState.collectAsState() val state by viewModel.timelineState.collectAsStateWithLifecycle()
val drawerState by viewModel.drawerState.collectAsState() val drawerState by viewModel.drawerState.collectAsStateWithLifecycle()
val isRefreshing by viewModel.isRefreshing.collectAsState() val isRefreshing by viewModel.isRefreshing.collectAsStateWithLifecycle()
val navigator = LocalNavigator.currentOrThrow val navigator = LocalNavigator.currentOrThrow