ProfileUpdateActivity 문자열 리소스화

This commit is contained in:
2025-12-01 22:05:22 +09:00
parent 707107328a
commit 90c71026da
7 changed files with 173 additions and 72 deletions

View File

@@ -158,8 +158,9 @@ class ProfileUpdateActivity : BaseActivity<ActivityProfileUpdateBinding>(
}
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<ActivityProfileUpdateBinding>(
}
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<ActivityProfileUpdateBinding>(
.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()
}
)

View File

@@ -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<Gender>
get() = _genderLiveData
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
private val _selectedTagLiveData = MutableLiveData<List<String>>()
@@ -65,19 +67,17 @@ class ProfileUpdateViewModel(private val repository: UserRepository) : BaseViewM
_selectedTagLiveData.postValue(profileResponse.tags)
_genderLiveData.postValue(profileResponse.gender)
_userInfoLiveData.postValue(profileResponse)
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_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("프로필 이미지가 변경되었습니다.")
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
_toastLiveData.postValue(
ToastMessage(resId = R.string.msg_profile_update_image_updated)
)
} else {
_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,25 +179,23 @@ 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(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
it.message?.let { message ->
ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.common_error_unknown)
)
}
}
_isLoading.value = false
},
{
_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,25 +244,23 @@ 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(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
it.message?.let { message ->
ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.common_error_unknown)
)
}
}
_isLoading.value = false
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)

View File

@@ -55,8 +55,9 @@ class ModifyPasswordActivity : BaseActivity<ActivityModifyPasswordBinding>(
)
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()
}
}
}

View File

@@ -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" />
<View
android:layout_width="match_parent"
@@ -101,7 +101,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_password_label"
android:textColor="@color/color_eeeeee"
android:textSize="12sp" />
@@ -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" />
</RelativeLayout>
@@ -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" />
</RelativeLayout>
@@ -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" />

View File

@@ -299,6 +299,37 @@
<string name="screen_my_notice_more">Details</string>
<string name="screen_my_login">Login</string>
<string name="screen_my_edit_profile">Edit profile</string>
<!-- Profile Update -->
<string name="screen_profile_update_email_label">Email</string>
<string name="screen_profile_update_password_label">Password</string>
<string name="screen_profile_update_password_mask">********</string>
<string name="screen_profile_update_change_password">Change password</string>
<string name="screen_profile_update_nickname_label">Nickname</string>
<string name="screen_profile_update_change_nickname">Change nickname</string>
<string name="screen_profile_update_gender_label">Gender</string>
<string name="screen_profile_update_gender_female">Female</string>
<string name="screen_profile_update_gender_male">Male</string>
<string name="screen_profile_update_gender_none">Prefer not to say</string>
<string name="screen_profile_update_instagram_label">Instagram</string>
<string name="screen_profile_update_instagram_hint">Instagram URL</string>
<string name="screen_profile_update_youtube_label">YouTube channel</string>
<string name="screen_profile_update_youtube_hint">YouTube channel URL</string>
<string name="screen_profile_update_website_label">Website</string>
<string name="screen_profile_update_website_hint">Website URL</string>
<string name="screen_profile_update_blog_label">Blog</string>
<string name="screen_profile_update_blog_hint">Blog URL</string>
<string name="screen_profile_update_interest_title">Interests</string>
<string name="screen_profile_update_interest_select">Select interests</string>
<string name="screen_profile_update_introduce_label">Bio</string>
<string name="screen_profile_update_introduce_hint">Enter a short bio</string>
<string name="screen_profile_update_save">Save</string>
<string name="msg_profile_update_image_pick_failed">Failed to load image.</string>
<string name="msg_profile_update_image_updated">Profile image updated.</string>
<string name="msg_profile_update_updated">Profile updated.</string>
<string name="msg_profile_update_password_current_required">Enter your current password</string>
<string name="msg_profile_update_password_new_required">Enter a new password</string>
<string name="msg_profile_update_password_mismatch">Passwords do not match.</string>
<string name="msg_profile_update_password_updated">Password updated.</string>
<string name="screen_my_view_channel">View my channel</string>
<string name="screen_my_charge_can">Charge cans</string>
<string name="screen_my_point_reward">Point reward</string>

View File

@@ -299,6 +299,37 @@
<string name="screen_my_notice_more">詳細</string>
<string name="screen_my_login">ログイン</string>
<string name="screen_my_edit_profile">プロフィール編集</string>
<!-- Profile Update -->
<string name="screen_profile_update_email_label">メールアドレス</string>
<string name="screen_profile_update_password_label">パスワード</string>
<string name="screen_profile_update_password_mask">********</string>
<string name="screen_profile_update_change_password">パスワード変更</string>
<string name="screen_profile_update_nickname_label">ニックネーム</string>
<string name="screen_profile_update_change_nickname">ニックネーム変更</string>
<string name="screen_profile_update_gender_label">性別</string>
<string name="screen_profile_update_gender_female">女性</string>
<string name="screen_profile_update_gender_male">男性</string>
<string name="screen_profile_update_gender_none">非公開</string>
<string name="screen_profile_update_instagram_label">インスタグラム</string>
<string name="screen_profile_update_instagram_hint">InstagramのURL</string>
<string name="screen_profile_update_youtube_label">YouTubeチャンネル</string>
<string name="screen_profile_update_youtube_hint">YouTubeチャンネルのURL</string>
<string name="screen_profile_update_website_label">ウェブサイト</string>
<string name="screen_profile_update_website_hint">ウェブサイトのURL</string>
<string name="screen_profile_update_blog_label">ブログ</string>
<string name="screen_profile_update_blog_hint">ブログのURL</string>
<string name="screen_profile_update_interest_title">興味・関心</string>
<string name="screen_profile_update_interest_select">関心事を選択</string>
<string name="screen_profile_update_introduce_label">紹介文</string>
<string name="screen_profile_update_introduce_hint">紹介文を入力してください</string>
<string name="screen_profile_update_save">保存する</string>
<string name="msg_profile_update_image_pick_failed">画像の読み込み中にエラーが発生しました。</string>
<string name="msg_profile_update_image_updated">プロフィール画像を変更しました。</string>
<string name="msg_profile_update_updated">プロフィールを変更しました。</string>
<string name="msg_profile_update_password_current_required">現在のパスワードを入力してください</string>
<string name="msg_profile_update_password_new_required">変更するパスワードを入力してください</string>
<string name="msg_profile_update_password_mismatch">パスワードが一致しません。</string>
<string name="msg_profile_update_password_updated">パスワードを変更しました。</string>
<string name="screen_my_view_channel">マイチャンネルを見る</string>
<string name="screen_my_charge_can">CANチャージ</string>
<string name="screen_my_point_reward">ポイントリワード</string>

View File

@@ -298,6 +298,37 @@
<string name="screen_my_notice_more">자세히</string>
<string name="screen_my_login">LOGIN</string>
<string name="screen_my_edit_profile">프로필 수정</string>
<!-- Profile Update -->
<string name="screen_profile_update_email_label">이메일</string>
<string name="screen_profile_update_password_label">비밀번호</string>
<string name="screen_profile_update_password_mask">********</string>
<string name="screen_profile_update_change_password">비밀번호 변경</string>
<string name="screen_profile_update_nickname_label">닉네임</string>
<string name="screen_profile_update_change_nickname">닉네임 변경</string>
<string name="screen_profile_update_gender_label">성별</string>
<string name="screen_profile_update_gender_female">여자</string>
<string name="screen_profile_update_gender_male">남자</string>
<string name="screen_profile_update_gender_none">공개 안 함</string>
<string name="screen_profile_update_instagram_label">인스타그램</string>
<string name="screen_profile_update_instagram_hint">인스타그램 URL</string>
<string name="screen_profile_update_youtube_label">유튜브 채널</string>
<string name="screen_profile_update_youtube_hint">유튜브 채널 URL</string>
<string name="screen_profile_update_website_label">웹사이트</string>
<string name="screen_profile_update_website_hint">웹사이트 URL</string>
<string name="screen_profile_update_blog_label">블로그</string>
<string name="screen_profile_update_blog_hint">블로그 URL</string>
<string name="screen_profile_update_interest_title">관심사</string>
<string name="screen_profile_update_interest_select">관심사 선택</string>
<string name="screen_profile_update_introduce_label">소개글</string>
<string name="screen_profile_update_introduce_hint">소개글을 입력하세요</string>
<string name="screen_profile_update_save">저장하기</string>
<string name="msg_profile_update_image_pick_failed">이미지를 불러오는 중 오류가 발생했습니다.</string>
<string name="msg_profile_update_image_updated">프로필 이미지가 변경되었습니다.</string>
<string name="msg_profile_update_updated">프로필이 변경되었습니다.</string>
<string name="msg_profile_update_password_current_required">현재 비밀번호를 입력하세요</string>
<string name="msg_profile_update_password_new_required">변경할 비밀번호를 입력하세요</string>
<string name="msg_profile_update_password_mismatch">비밀번호가 일치하지 않습니다.</string>
<string name="msg_profile_update_password_updated">비밀번호가 변경되었습니다.</string>
<string name="screen_my_view_channel">내 채널 보기</string>
<string name="screen_my_charge_can">캔 충전</string>
<string name="screen_my_point_reward">포인트 리워드</string>