From 868a24a608cdd8a506484c78b453f84f7ba1cdb9 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 8 Sep 2022 13:06:12 -0700 Subject: [PATCH] observe regsitration state from login view model --- .../omnivore/omnivore/ui/auth/EmailLogin.kt | 4 +-- .../omnivore/ui/auth/LoginViewModel.kt | 17 +++++++---- .../omnivore/ui/auth/WelcomeScreen.kt | 30 ++++++------------- .../omnivore/ui/home/HomeViewModel.kt | 1 - 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/EmailLogin.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/EmailLogin.kt index 99b41f432..6945ed327 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/EmailLogin.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/EmailLogin.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.unit.dp @SuppressLint("CoroutineCreationDuringComposition") @Composable -fun EmailLoginView(viewModel: LoginViewModel, onAuthProviderButtonTap: () -> Unit) { +fun EmailLoginView(viewModel: LoginViewModel) { var email by rememberSaveable { mutableStateOf("") } var password by rememberSaveable { mutableStateOf("") } @@ -53,7 +53,7 @@ fun EmailLoginView(viewModel: LoginViewModel, onAuthProviderButtonTap: () -> Uni text = AnnotatedString("Return to Social Login"), style = MaterialTheme.typography.titleMedium .plus(TextStyle(textDecoration = TextDecoration.Underline)), - onClick = { onAuthProviderButtonTap() } + onClick = { viewModel.showSocialLogin() } ) } Spacer(modifier = Modifier.weight(1.0F)) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt index 4a0618d9d..ea58de14a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt @@ -3,10 +3,7 @@ package app.omnivore.omnivore.ui.auth import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import androidx.lifecycle.LiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.asLiveData -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import app.omnivore.omnivore.* import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.android.gms.common.api.ApiException @@ -19,7 +16,7 @@ import javax.inject.Inject enum class RegistrationState { - AuthProviderButtons, + SocialLogin, EmailSignIn } @@ -38,10 +35,20 @@ class LoginViewModel @Inject constructor( .distinctUntilChanged() .asLiveData() + val registrationStateLiveData = MutableLiveData(RegistrationState.SocialLogin) + fun getAuthCookieString(): String? = runBlocking { datastoreRepo.getString(DatastoreKeys.omnivoreAuthCookieString) } + fun showSocialLogin() { + registrationStateLiveData.value = RegistrationState.SocialLogin + } + + fun showEmailSignIn() { + registrationStateLiveData.value = RegistrationState.EmailSignIn + } + fun login(email: String, password: String) { val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt index 8f9c5fe8a..cdcab04e0 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.ClickableText import androidx.compose.material3.* import androidx.compose.runtime.* +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -35,11 +36,9 @@ fun WelcomeScreen(viewModel: LoginViewModel) { @SuppressLint("CoroutineCreationDuringComposition") @Composable fun WelcomeScreenContent(viewModel: LoginViewModel) { - var registrationState by rememberSaveable { mutableStateOf(RegistrationState.AuthProviderButtons) } - - val onRegistrationStateChange = { state: RegistrationState -> - registrationState = state - } + val registrationState: RegistrationState by viewModel + .registrationStateLiveData + .observeAsState(RegistrationState.SocialLogin) val snackBarHostState = remember { SnackbarHostState() } val coroutineScope = rememberCoroutineScope() @@ -62,14 +61,9 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) { when(registrationState) { RegistrationState.EmailSignIn -> { - EmailLoginView( - viewModel = viewModel, - onAuthProviderButtonTap = { - onRegistrationStateChange(RegistrationState.AuthProviderButtons) - } - ) + EmailLoginView(viewModel = viewModel) } - RegistrationState.AuthProviderButtons -> { + RegistrationState.SocialLogin -> { Text( text = stringResource(id = R.string.welcome_title), style = MaterialTheme.typography.headlineLarge @@ -84,10 +78,7 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) { Spacer(modifier = Modifier.height(50.dp)) - AuthProviderView( - viewModel = viewModel, - onEmailButtonTap = { onRegistrationStateChange(RegistrationState.EmailSignIn) } - ) + AuthProviderView(viewModel = viewModel) } } @@ -112,10 +103,7 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) { } @Composable -fun AuthProviderView( - viewModel: LoginViewModel, - onEmailButtonTap: () -> Unit -) { +fun AuthProviderView(viewModel: LoginViewModel) { val isGoogleAuthAvailable: Boolean = GoogleApiAvailability .getInstance() .isGooglePlayServicesAvailable(LocalContext.current) == 0 @@ -138,7 +126,7 @@ fun AuthProviderView( text = AnnotatedString("Continue with Email"), style = MaterialTheme.typography.titleMedium .plus(TextStyle(textDecoration = TextDecoration.Underline)), - onClick = { onEmailButtonTap() } + onClick = { viewModel.showEmailSignIn() } ) } Spacer(modifier = Modifier.weight(1.0F)) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt index 5d4ab6074..85ba6ecec 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt @@ -1,6 +1,5 @@ package app.omnivore.omnivore.ui.home -import android.util.Log import androidx.core.net.toUri import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel