From 355c443340791448b0d7ce818a079c7f8d3cb51a Mon Sep 17 00:00:00 2001 From: Anbyeonghun Date: Wed, 13 Jul 2022 19:37:13 +0900 Subject: [PATCH] #7 Feature google login success event handle --- .../knowing/draven/ui/sign/LoginActivity.kt | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/presentation/src/main/java/com/knowing/draven/ui/sign/LoginActivity.kt b/presentation/src/main/java/com/knowing/draven/ui/sign/LoginActivity.kt index a9c337e..ae68fec 100644 --- a/presentation/src/main/java/com/knowing/draven/ui/sign/LoginActivity.kt +++ b/presentation/src/main/java/com/knowing/draven/ui/sign/LoginActivity.kt @@ -6,24 +6,35 @@ import android.util.Log import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.viewModels import com.knowing.draven.R import com.knowing.draven.databinding.ActivityLoginBinding import com.knowing.draven.base.BaseActivity import com.google.android.gms.auth.api.signin.GoogleSignIn import com.google.android.gms.auth.api.signin.GoogleSignInOptions -import com.google.android.gms.common.Scopes import com.google.android.gms.common.api.ApiException -import com.google.android.gms.common.api.Scope import com.knowing.draven.BuildConfig +import com.knowing.draven.MainActivity +import com.knowing.draven.util.repeatOnStarted +import com.knowing.draven.viewmodel.AuthViewModel +import com.knowing.draven.viewmodel.AuthViewModel.Event +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.collect +@AndroidEntryPoint class LoginActivity : BaseActivity(R.layout.activity_login) { + private val vm: AuthViewModel by viewModels() private lateinit var activityLauncher: ActivityResultLauncher override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding.activity = this + repeatOnStarted { + vm.eventFlow.collect { event -> handleEvent(event) } + } + val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestServerAuthCode(BuildConfig.GOOGLE_CLIENT_ID) .requestEmail() @@ -37,7 +48,8 @@ class LoginActivity : BaseActivity(R.layout.activity_login try { val task = GoogleSignIn.getSignedInAccountFromIntent(result.data) val account = task.result - Log.d("TAG", account.serverAuthCode.toString()) + Log.d("Code", account.serverAuthCode.toString()) + vm.googleSignIn(account.serverAuthCode.toString()) } catch (e: ApiException) { e.printStackTrace() } @@ -46,4 +58,20 @@ class LoginActivity : BaseActivity(R.layout.activity_login binding.googleLogin.setOnClickListener { activityLauncher.launch(client.signInIntent) } } + + private fun handleEvent(event: Event) = when(event){ + is Event.SuccessGoogleSignIn -> { + moveToMain() + } + else -> {} + } + + private fun moveToMain(){ + val intent = Intent(this@LoginActivity, MainActivity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or + Intent.FLAG_ACTIVITY_CLEAR_TASK or + Intent.FLAG_ACTIVITY_NEW_TASK + } + startActivity(intent) + } } \ No newline at end of file