Skip to content

Commit

Permalink
#17 [REFACTOR] 로그인 성공/실패 로직 통합
Browse files Browse the repository at this point in the history
  • Loading branch information
youjin09222 committed Jan 16, 2025
1 parent e13ed44 commit 4ef97c2
Showing 1 changed file with 31 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,17 @@ class LoginViewModel @Inject constructor(
viewModelScope.launch {
when {
token != null -> {
showToast(R.string.toast_kakao_login_success)
postLogin(token.accessToken, SocialType.KAKAO)
handleLoginSuccess(
token.accessToken,
SocialType.KAKAO,
R.string.toast_kakao_login_success
)
}

error != null -> handleError(error, R.string.toast_kakao_login_failed)
error != null -> handleError(
error,
R.string.toast_kakao_login_failed
)
}
}
}
Expand All @@ -72,29 +78,44 @@ class LoginViewModel @Inject constructor(
val result = credentialManager.getCredential(context, request)
handleGoogleLoginResult(result.credential)
}.onFailure { exception ->
handleLoginError(exception)
handleError(
exception,
R.string.toast_google_login_failed
)
}
}
}

private fun handleGoogleLoginResult(credential: Credential) {
if (credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
val googleIdTokenCredential = GoogleIdTokenCredential.createFrom(credential.data)
handleLoginSuccess(googleIdTokenCredential.id)
handleLoginSuccess(
googleIdTokenCredential.id,
SocialType.GOOGLE,
R.string.toast_google_login_success
)
} else {
showToast(R.string.toast_google_login_failed)
}
}

private fun handleLoginSuccess(token: String) {
showToast(R.string.toast_google_login_success)
private fun handleLoginSuccess(
token: String,
socialType: SocialType,
successToast: Int
) {
showToast(successToast)
viewModelScope.launch {
postLogin(token, SocialType.GOOGLE)
postLogin(token, socialType)
}
}

private fun handleLoginError(error: Throwable) {
showToast(R.string.toast_google_login_failed, error.localizedMessage.orEmpty())
private fun handleError(error: Throwable, @StringRes errorMessageResId: Int) {
if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
showToast(R.string.toast_login_cancelled)
} else {
showToast(errorMessageResId, error.localizedMessage.orEmpty())
}
}

private fun postLogin(token: String, socialType: SocialType) {
Expand Down Expand Up @@ -126,14 +147,6 @@ class LoginViewModel @Inject constructor(
}
}

private fun handleError(error: Throwable, @StringRes errorMessageResId: Int) {
if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
showToast(R.string.toast_login_cancelled)
} else {
showToast(errorMessageResId, error.localizedMessage.orEmpty())
}
}

private fun showToast(@StringRes messageResId: Int, vararg formatArgs: String) {
emitSideEffect(
LoginSideEffect.ShowToast(
Expand Down

0 comments on commit 4ef97c2

Please sign in to comment.