diff --git a/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginActivity.kt index 9a8b70a9..e65a3968 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginActivity.kt @@ -190,8 +190,13 @@ class LoginActivity : BaseActivity(ActivityLoginBinding::i } ) - viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + viewModel.toastLiveData.observe(this) { message -> + val text = when (message) { + is LoginUiMessage.Text -> message.value + is LoginUiMessage.Resource -> getString(message.resId) + null -> null + } + text?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } } viewModel.isLoading.observe(this) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginViewModel.kt index 7d870b25..62067695 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/login/LoginViewModel.kt @@ -1,10 +1,12 @@ package kr.co.vividnext.sodalive.user.login +import androidx.annotation.StringRes import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.user.UserRepository @@ -14,8 +16,8 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() { var email = "" var password = "" - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -46,19 +48,17 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() { SharedPreferenceManager.profileImage = it.data.profileImage onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + LoginUiMessage.Text(message) + } ?: LoginUiMessage.Resource(R.string.common_error_unknown) + ) } }, { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(LoginUiMessage.Resource(R.string.common_error_unknown)) } ) ) @@ -88,19 +88,17 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() { SharedPreferenceManager.profileImage = it.data.profileImage onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + LoginUiMessage.Text(message) + } ?: LoginUiMessage.Resource(R.string.common_error_unknown) + ) } }, { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(LoginUiMessage.Resource(R.string.common_error_unknown)) } ) ) @@ -108,12 +106,16 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() { fun login(onSuccess: (String?) -> Unit) { if (email.isBlank()) { - _toastLiveData.postValue("이메일을 입력하세요.") + _toastLiveData.postValue( + LoginUiMessage.Resource(R.string.login_error_email_required) + ) return } if (password.isBlank()) { - _toastLiveData.postValue("비밃번호를 입력하세요.") + _toastLiveData.postValue( + LoginUiMessage.Resource(R.string.login_error_password_required) + ) return } @@ -134,21 +136,24 @@ class LoginViewModel(private val repository: UserRepository) : BaseViewModel() { SharedPreferenceManager.profileImage = it.data.profileImage onSuccess(it.message) } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + LoginUiMessage.Text(message) + } ?: LoginUiMessage.Resource(R.string.common_error_unknown) + ) } }, { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(LoginUiMessage.Resource(R.string.common_error_unknown)) } ) ) } } + +sealed class LoginUiMessage { + data class Resource(@StringRes val resId: Int) : LoginUiMessage() + data class Text(val value: String) : LoginUiMessage() +} diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index e8f0d152..af9a7989 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -67,6 +67,8 @@ Terms of Service Privacy Policy (Required) + Please enter your email. + Please enter your password. Could not sign in with Google. Please try again. Could not sign in. Please try again. Could not sign in with Kakao. Please try again. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 2ee29a16..4c7bf86d 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -67,6 +67,8 @@ 利用規約 個人情報の収集・利用について (必須) + メールアドレスを入力してください。 + パスワードを入力してください。 Googleでログインできませんでした。もう一度お試しください。 ログインできませんでした。もう一度お試しください。 Kakaoアカウントでログインできませんでした。もう一度お試しください。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 90546315..10b8e601 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,6 +66,8 @@ 이용약관 개인정보수집 및 이용동의 (필수) + 이메일을 입력하세요. + 비밀번호를 입력하세요. 구글 로그인을 하지 못했습니다. 다시 시도해 주세요 로그인을 하지 못했습니다. 다시 시도해 주세요 카카오 계정으로 로그인 하지 못했습니다. 다시 시도해 주세요