Skip to content

Commit

Permalink
#7 Feature google login success event handle
Browse files Browse the repository at this point in the history
  • Loading branch information
Heonbyeong committed Jul 13, 2022
1 parent 9e73fa1 commit 355c443
Showing 1 changed file with 31 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<ActivityLoginBinding>(R.layout.activity_login) {

private val vm: AuthViewModel by viewModels()
private lateinit var activityLauncher: ActivityResultLauncher<Intent>

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()
Expand All @@ -37,7 +48,8 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(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()
}
Expand All @@ -46,4 +58,20 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>(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)
}
}

0 comments on commit 355c443

Please sign in to comment.