diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/WelcomeScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/WelcomeScreen.kt index c43ecd15b..bc13591b6 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/WelcomeScreen.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/WelcomeScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp import app.omnivore.omnivore.R import app.omnivore.omnivore.feature.theme.OmnivoreTheme import com.google.android.gms.common.GoogleApiAvailability -import kotlinx.coroutines.launch @Composable fun WelcomeScreen(viewModel: LoginViewModel) { @@ -40,11 +39,10 @@ fun WelcomeScreen(viewModel: LoginViewModel) { @Composable fun WelcomeScreenContent(viewModel: LoginViewModel) { val registrationState: RegistrationState by viewModel.registrationStateLiveData.observeAsState( - RegistrationState.SocialLogin - ) + RegistrationState.SocialLogin + ) val snackBarHostState = remember { SnackbarHostState() } - val coroutineScope = rememberCoroutineScope() Column( verticalArrangement = Arrangement.SpaceAround, @@ -101,19 +99,18 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) { Spacer(modifier = Modifier.weight(1.0F)) } - if (viewModel.errorMessage != null) { - coroutineScope.launch { - val result = snackBarHostState.showSnackbar( - viewModel.errorMessage!!, - actionLabel = "Dismiss", - duration = SnackbarDuration.Indefinite - ) - when (result) { - SnackbarResult.ActionPerformed -> viewModel.resetErrorMessage() - else -> {} - } + LaunchedEffect(viewModel.errorMessage) { + val result = snackBarHostState.showSnackbar( + viewModel.errorMessage!!, + actionLabel = "Dismiss", + duration = SnackbarDuration.Indefinite + ) + when (result) { + SnackbarResult.ActionPerformed -> viewModel.resetErrorMessage() + else -> {} } - + } + if (viewModel.errorMessage != null) { SnackbarHost(hostState = snackBarHostState) } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingScreen.kt index 0ad2fe432..5cb8ca50e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingScreen.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingScreen.kt @@ -8,10 +8,10 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.StrokeCap @@ -43,12 +43,10 @@ internal fun FollowingScreen( ) { val snackbarHostState = remember { SnackbarHostState() } - val coroutineScope = rememberCoroutineScope() - val uiState by viewModel.uiState.collectAsStateWithLifecycle() - viewModel.snackbarMessage?.let { - coroutineScope.launch { + LaunchedEffect(viewModel.snackbarMessage) { + viewModel.snackbarMessage?.let { snackbarHostState.showSnackbar(it) viewModel.clearSnackbarMessage() } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt index 5a7c39493..cd81bb79e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt @@ -20,7 +20,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier @@ -98,11 +98,10 @@ fun RootView( startDestination = startDestination, loginViewModel = loginViewModel ) - DisposableEffect(hasAuthToken) { + LaunchedEffect(hasAuthToken) { if (hasAuthToken) { loginViewModel.registerUser() } - onDispose {} } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/savedItemViews/TypeaheadSearchCard.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/savedItemViews/TypeaheadSearchCard.kt index 2eb86e04a..156e49eac 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/savedItemViews/TypeaheadSearchCard.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/savedItemViews/TypeaheadSearchCard.kt @@ -15,9 +15,9 @@ import app.omnivore.omnivore.feature.library.SavedItemAction @OptIn(ExperimentalFoundationApi::class) @Composable -fun TypeaheadSearchCard(cardData: TypeaheadCardData, onClickHandler: () -> Unit, actionHandler: (SavedItemAction) -> Unit) { +fun TypeaheadSearchCard(modifier: Modifier = Modifier, cardData: TypeaheadCardData, onClickHandler: () -> Unit, actionHandler: (SavedItemAction) -> Unit) { Column( - modifier = Modifier + modifier = modifier .combinedClickable( onClick = onClickHandler, )