diff --git a/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordActivity.kt index 479f8cd7..81a19a5f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordActivity.kt @@ -7,6 +7,7 @@ import android.widget.Toast import com.jakewharton.rxbinding4.widget.textChanges 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.BaseActivity import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.ActivityFindPasswordBinding @@ -27,7 +28,7 @@ class FindPasswordActivity : BaseActivity( override fun setupView() { loadingDialog = LoadingDialog(this, layoutInflater) - binding.toolbar.tvBack.text = "비밀번호 재설정" + binding.toolbar.tvBack.text = getString(R.string.title_find_password) binding.toolbar.tvBack.setOnClickListener { finish() } binding.tvServiceCenter.setOnClickListener { @@ -52,8 +53,13 @@ class FindPasswordActivity : BaseActivity( } ) - viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + viewModel.toastLiveData.observe(this) { message -> + val text = when (message) { + is FindPasswordUiMessage.Text -> message.value + is FindPasswordUiMessage.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/find_password/FindPasswordViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordViewModel.kt index ca5338ab..aa2299a0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/find_password/FindPasswordViewModel.kt @@ -1,10 +1,12 @@ package kr.co.vividnext.sodalive.user.find_password +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.user.UserRepository @@ -16,13 +18,15 @@ class FindPasswordViewModel(private val repository: UserRepository) : BaseViewMo val isLoading: LiveData get() = _isLoading - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData fun findPassword(onSuccess: () -> Unit) { if (email.isBlank()) { - _toastLiveData.postValue("이메일을 입력하세요.") + _toastLiveData.postValue( + FindPasswordUiMessage.Resource(R.string.login_error_email_required) + ) return } @@ -37,25 +41,30 @@ class FindPasswordViewModel(private val repository: UserRepository) : BaseViewMo _isLoading.value = false if (it.success) { _toastLiveData.postValue( - "임시 비밀번호가 입력하신 이메일로 발송되었습니다. 이메일을 확인해 주세요." + FindPasswordUiMessage.Resource(R.string.find_password_success) ) onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + FindPasswordUiMessage.Text(message) + } ?: FindPasswordUiMessage.Resource(R.string.common_error_unknown) + ) } }, { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + FindPasswordUiMessage.Resource(R.string.common_error_unknown) + ) } ) ) } } + +sealed class FindPasswordUiMessage { + data class Resource(@StringRes val resId: Int) : FindPasswordUiMessage() + data class Text(val value: String) : FindPasswordUiMessage() +} diff --git a/app/src/main/res/layout/activity_find_password.xml b/app/src/main/res/layout/activity_find_password.xml index 45466fe7..bcfe2913 100644 --- a/app/src/main/res/layout/activity_find_password.xml +++ b/app/src/main/res/layout/activity_find_password.xml @@ -29,7 +29,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:lineSpacingExtra="6dp" - android:text="회원가입한 이메일 주소로\n임시 비밀번호를 보내드립니다." + android:text="@string/find_password_description_primary" android:textColor="@color/color_eeeeee" android:textSize="16sp" /> @@ -41,7 +41,7 @@ android:fontFamily="@font/gmarket_sans_medium" android:gravity="center" android:lineSpacingExtra="6dp" - android:text="임시 비밀번호로 로그인 후\n마이페이지 > 프로필 설정에서\n비밀번호를 변경하고 이용하세요." + android:text="@string/find_password_description_secondary" android:textColor="@color/color_909090" android:textSize="12sp" /> @@ -65,7 +65,7 @@ android:layout_height="wrap_content" android:background="@android:color/transparent" android:fontFamily="@font/gmarket_sans_medium" - android:hint="이메일을 입력하세요" + android:hint="@string/find_password_email_hint" android:importantForAutofill="no" android:inputType="textEmailAddress" android:paddingVertical="18dp" @@ -84,7 +84,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="임시 비밀번호 받기" + android:text="@string/find_password_submit" android:textColor="@color/white" android:textSize="15sp" /> @@ -98,7 +98,7 @@ android:drawablePadding="13.3dp" android:paddingHorizontal="18.7dp" android:paddingVertical="10.7dp" - android:text="고객센터로 문의하기" + android:text="@string/find_password_contact_support" android:textColor="@color/color_3bb9f1" app:drawableStartCompat="@drawable/ic_headphones_blue" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index d4df3455..b1c39c23 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -67,6 +67,13 @@ Terms of Service Privacy Policy (Required) + Reset password + We will send a temporary password to your registered email. + Log in with the temporary password, then change it in My Page > Profile settings. + Enter your email + Get temporary password + Contact customer support + A temporary password has been sent to your email. Please check your inbox. Please enter your email. Please enter your password. You must agree to the terms to sign up. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 90569b36..0278554a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -67,6 +67,13 @@ 利用規約 個人情報の収集・利用について (必須) + パスワード再設定 + 登録したメールアドレスに仮パスワードを送信します。 + 仮パスワードでログイン後、マイページ > プロフィール設定でパスワードを変更してください。 + メールアドレスを入力してください。 + 仮パスワードを受け取る + カスタマーセンターに問い合わせる + 仮パスワードを入力いただいたメールに送信しました。メールをご確認ください。 メールアドレスを入力してください。 パスワードを入力してください。 利用規約に同意すると会員登録できます。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d170c3e1..743d6473 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,6 +66,13 @@ 이용약관 개인정보수집 및 이용동의 (필수) + 비밀번호 재설정 + 회원가입한 이메일 주소로\n임시 비밀번호를 보내드립니다. + 임시 비밀번호로 로그인 후\n마이페이지 > 프로필 설정에서\n비밀번호를 변경하고 이용하세요. + 이메일을 입력하세요 + 임시 비밀번호 받기 + 고객센터로 문의하기 + 임시 비밀번호가 입력하신 이메일로 발송되었습니다. 이메일을 확인해 주세요. 이메일을 입력하세요. 비밀번호를 입력하세요. 약관에 동의하셔야 회원가입이 가능합니다.