diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateActivity.kt index 18fa8377..c44e8c86 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateActivity.kt @@ -158,8 +158,9 @@ class ProfileUpdateActivity : BaseActivity( } viewModel.toastLiveData.observe(this) { - it?.let { - Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() + val message = it?.resId?.let(::getString) ?: it?.message + message?.let { text -> + Toast.makeText(applicationContext, text, Toast.LENGTH_LONG).show() } } @@ -197,7 +198,7 @@ class ProfileUpdateActivity : BaseActivity( } override fun setupView() { - binding.toolbar.tvBack.text = "프로필 수정" + binding.toolbar.tvBack.text = getString(R.string.screen_my_edit_profile) binding.toolbar.tvBack.setOnClickListener { finish() } loadingDialog = LoadingDialog(this, layoutInflater) @@ -226,8 +227,12 @@ class ProfileUpdateActivity : BaseActivity( .into(binding.ivProfile) } }, - onError = { e -> - Toast.makeText(this, "${e.message}", Toast.LENGTH_SHORT).show() + onError = { + Toast.makeText( + this, + getString(R.string.msg_profile_update_image_pick_failed), + Toast.LENGTH_SHORT + ).show() } ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateViewModel.kt index 193871e7..cb067fc0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/ProfileUpdateViewModel.kt @@ -5,8 +5,10 @@ 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.common.ToastMessage import kr.co.vividnext.sodalive.user.Gender import kr.co.vividnext.sodalive.user.UserRepository import okhttp3.MediaType.Companion.toMediaType @@ -40,8 +42,8 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM val genderLiveData: LiveData get() = _genderLiveData - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private val _selectedTagLiveData = MutableLiveData>() @@ -66,18 +68,16 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM _genderLiveData.postValue(profileResponse.gender) _userInfoLiveData.postValue(profileResponse) } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) + ) } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) } ) ) @@ -102,20 +102,20 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM { if (it.success && it.data != null) { onSuccess(it.data) - _toastLiveData.postValue("프로필 이미지가 변경되었습니다.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.msg_profile_update_image_updated) + ) } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) + ) } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) } ) ) @@ -179,17 +179,15 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM { if (it.success) { _toastLiveData.postValue( - "프로필이 변경되었습니다." + ToastMessage(resId = R.string.msg_profile_update_updated) ) onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) + ) } _isLoading.value = false @@ -197,7 +195,7 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) } ) ) @@ -210,17 +208,23 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM val email = SharedPreferenceManager.email if (currentPassword.isBlank()) { - _toastLiveData.postValue("현재 비밀번호를 입력하세요") + _toastLiveData.postValue( + ToastMessage(resId = R.string.msg_profile_update_password_current_required) + ) return } if (newPassword.isBlank()) { - _toastLiveData.postValue("변경할 비밀번호를 입력하세요") + _toastLiveData.postValue( + ToastMessage(resId = R.string.msg_profile_update_password_new_required) + ) return } if (newPasswordConfirm != newPassword) { - _toastLiveData.postValue("비밀번호가 일치하지 않습니다.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.msg_profile_update_password_mismatch) + ) return } @@ -240,17 +244,15 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM { if (it.success) { _toastLiveData.postValue( - "비밀번호가 변경되었습니다." + ToastMessage(resId = R.string.msg_profile_update_password_updated) ) onSuccess() } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } + _toastLiveData.postValue( + it.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) + ) } _isLoading.value = false @@ -258,7 +260,7 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM { _isLoading.value = false it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/password/ModifyPasswordActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/password/ModifyPasswordActivity.kt index a841f147..4d150c27 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/password/ModifyPasswordActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/profile/password/ModifyPasswordActivity.kt @@ -55,8 +55,9 @@ class ModifyPasswordActivity : BaseActivity( ) viewModel.toastLiveData.observe(this) { - it?.let { - Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() + val message = it?.resId?.let(::getString) ?: it?.message + message?.let { text -> + Toast.makeText(applicationContext, text, Toast.LENGTH_LONG).show() } } } diff --git a/app/src/main/res/layout/activity_profile_update.xml b/app/src/main/res/layout/activity_profile_update.xml index 617ea84c..721b23a7 100644 --- a/app/src/main/res/layout/activity_profile_update.xml +++ b/app/src/main/res/layout/activity_profile_update.xml @@ -69,7 +69,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="이메일" + android:text="@string/screen_profile_update_email_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -80,9 +80,9 @@ android:layout_marginHorizontal="6.7dp" android:layout_marginTop="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="tkdekatk121212@gmail.com" android:textColor="@color/color_777777" - android:textSize="13.3sp" /> + android:textSize="13.3sp" + tools:text="tkdekatk121212@gmail.com" /> @@ -118,7 +118,7 @@ android:layout_toStartOf="@+id/tv_modify_password" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center_vertical" - android:text="********" + android:text="@string/screen_profile_update_password_mask" android:textColor="@color/color_777777" android:textSize="13.3sp" /> @@ -139,7 +139,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:paddingHorizontal="22.7dp" android:paddingVertical="13.3dp" - android:text="비밀번호 변경" + android:text="@string/screen_profile_update_change_password" android:textColor="@color/white" android:textSize="13.3sp" /> @@ -168,7 +168,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="닉네임" + android:text="@string/screen_profile_update_nickname_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -207,7 +207,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:paddingHorizontal="22.7dp" android:paddingVertical="13.3dp" - android:text="닉네임 변경" + android:text="@string/screen_profile_update_change_nickname" android:textColor="@color/white" android:textSize="13.3sp" /> @@ -224,7 +224,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="성별" + android:text="@string/screen_profile_update_gender_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -243,7 +243,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="여자" + android:text="@string/screen_profile_update_gender_female" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -256,7 +256,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="남자" + android:text="@string/screen_profile_update_gender_male" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -269,7 +269,7 @@ android:button="@null" android:drawablePadding="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="공개 안 함" + android:text="@string/screen_profile_update_gender_none" android:textColor="@color/color_eeeeee" android:textSize="13.3sp" app:drawableStartCompat="@drawable/ic_radio_button_select" /> @@ -301,7 +301,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="인스타그램" + android:text="@string/screen_profile_update_instagram_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -311,7 +311,7 @@ android:layout_height="wrap_content" android:background="@drawable/edittext_underline" android:fontFamily="@font/gmarket_sans_medium" - android:hint="인스타그램 URL" + android:hint="@string/screen_profile_update_instagram_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="6.7dp" @@ -334,7 +334,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="유튜브 채널" + android:text="@string/screen_profile_update_youtube_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -344,7 +344,7 @@ android:layout_height="wrap_content" android:background="@drawable/edittext_underline" android:fontFamily="@font/gmarket_sans_medium" - android:hint="유튜브 채널 URL" + android:hint="@string/screen_profile_update_youtube_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="6.7dp" @@ -367,7 +367,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="웹사이트" + android:text="@string/screen_profile_update_website_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -377,7 +377,7 @@ android:layout_height="wrap_content" android:background="@drawable/edittext_underline" android:fontFamily="@font/gmarket_sans_medium" - android:hint="웹사이트 URL" + android:hint="@string/screen_profile_update_website_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="6.7dp" @@ -400,7 +400,7 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="6.7dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="블로그" + android:text="@string/screen_profile_update_blog_label" android:textColor="@color/color_eeeeee" android:textSize="12sp" /> @@ -410,7 +410,7 @@ android:layout_height="wrap_content" android:background="@drawable/edittext_underline" android:fontFamily="@font/gmarket_sans_medium" - android:hint="블로그 URL" + android:hint="@string/screen_profile_update_blog_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="6.7dp" @@ -439,7 +439,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="관심사" + android:text="@string/screen_profile_update_interest_title" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -452,7 +452,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="13.7dp" - android:text="관심사 선택" + android:text="@string/screen_profile_update_interest_select" android:textColor="@color/color_3bb9f1" android:textSize="16.7sp" /> @@ -485,7 +485,7 @@ android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" android:lineSpacingExtra="5sp" - android:text="소개글" + android:text="@string/screen_profile_update_introduce_label" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -497,7 +497,7 @@ android:background="@drawable/bg_round_corner_6_7_222222" android:fontFamily="@font/gmarket_sans_medium" android:gravity="top" - android:hint="소개글을 입력하세요" + android:hint="@string/screen_profile_update_introduce_hint" android:importantForAutofill="no" android:inputType="textMultiLine" android:minHeight="200dp" @@ -530,7 +530,7 @@ android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" android:paddingVertical="16dp" - android:text="저장하기" + android:text="@string/screen_profile_update_save" android:textColor="@color/white" android:textSize="18.3sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index b8db2d1f..d7ae02b5 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -299,6 +299,37 @@ Details Login Edit profile + + Email + Password + ******** + Change password + Nickname + Change nickname + Gender + Female + Male + Prefer not to say + Instagram + Instagram URL + YouTube channel + YouTube channel URL + Website + Website URL + Blog + Blog URL + Interests + Select interests + Bio + Enter a short bio + Save + Failed to load image. + Profile image updated. + Profile updated. + Enter your current password + Enter a new password + Passwords do not match. + Password updated. View my channel Charge cans Point reward diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 0e7b8899..353e0d5b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -299,6 +299,37 @@ 詳細 ログイン プロフィール編集 + + メールアドレス + パスワード + ******** + パスワード変更 + ニックネーム + ニックネーム変更 + 性別 + 女性 + 男性 + 非公開 + インスタグラム + InstagramのURL + YouTubeチャンネル + YouTubeチャンネルのURL + ウェブサイト + ウェブサイトのURL + ブログ + ブログのURL + 興味・関心 + 関心事を選択 + 紹介文 + 紹介文を入力してください + 保存する + 画像の読み込み中にエラーが発生しました。 + プロフィール画像を変更しました。 + プロフィールを変更しました。 + 現在のパスワードを入力してください + 変更するパスワードを入力してください + パスワードが一致しません。 + パスワードを変更しました。 マイチャンネルを見る CANチャージ ポイントリワード diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0509f4c7..759d6633 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -298,6 +298,37 @@ 자세히 LOGIN 프로필 수정 + + 이메일 + 비밀번호 + ******** + 비밀번호 변경 + 닉네임 + 닉네임 변경 + 성별 + 여자 + 남자 + 공개 안 함 + 인스타그램 + 인스타그램 URL + 유튜브 채널 + 유튜브 채널 URL + 웹사이트 + 웹사이트 URL + 블로그 + 블로그 URL + 관심사 + 관심사 선택 + 소개글 + 소개글을 입력하세요 + 저장하기 + 이미지를 불러오는 중 오류가 발생했습니다. + 프로필 이미지가 변경되었습니다. + 프로필이 변경되었습니다. + 현재 비밀번호를 입력하세요 + 변경할 비밀번호를 입력하세요 + 비밀번호가 일치하지 않습니다. + 비밀번호가 변경되었습니다. 내 채널 보기 캔 충전 포인트 리워드