From 4bc1173de4d99dec77d07f166934e6767ffafbfd Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 18 Aug 2022 11:52:40 -0700 Subject: [PATCH] create GoogleAuth Button file --- .../java/app/omnivore/omnivore/GoogleAuth.kt | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt new file mode 100644 index 000000000..dcdaffe44 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/GoogleAuth.kt @@ -0,0 +1,48 @@ +package app.omnivore.omnivore + +import android.app.Activity +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.ActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import com.google.android.gms.auth.api.signin.GoogleSignIn +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.auth.api.signin.GoogleSignInOptions +import com.google.android.gms.tasks.Task + + +@Composable +fun GoogleAuthButton(viewModel: LoginViewModel) { + val context = LocalContext.current + + val signInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) + .requestEmail() + .requestIdToken(stringResource(R.string.gcp_id)) + .requestId() + .requestProfile() + .build() + + val startForResult = + rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> + if (result.resultCode == Activity.RESULT_OK) { + val intent = result.data + if (result.data != null) { + val task: Task = GoogleSignIn.getSignedInAccountFromIntent(intent) + viewModel.handleGoogleAuthTask(task) + } + } + } + + Button( + onClick = { + val googleSignIn = GoogleSignIn.getClient(context, signInOptions) + startForResult.launch(googleSignIn.signInIntent) + } + ) { + Text(text = "Continue With Google") + } +}