닉네임 변경 화면 문자열 리소스화

This commit is contained in:
2025-12-02 12:24:34 +09:00
parent 5ff35b1da4
commit 3909920a4c
6 changed files with 108 additions and 65 deletions

View File

@@ -6,6 +6,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.common.SharedPreferenceManager
@@ -31,7 +32,7 @@ class NicknameUpdateActivity : BaseActivity<ActivityNicknameUpdateBinding>(
}
override fun setupView() {
binding.toolbar.tvBack.text = "닉네임 변경"
binding.toolbar.tvBack.text = getString(R.string.screen_nickname_update_title)
binding.toolbar.tvBack.setOnClickListener { finish() }
loadingDialog = LoadingDialog(this, layoutInflater)
@@ -59,8 +60,9 @@ class NicknameUpdateActivity : BaseActivity<ActivityNicknameUpdateBinding>(
)
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()
}
}
@@ -72,11 +74,12 @@ class NicknameUpdateActivity : BaseActivity<ActivityNicknameUpdateBinding>(
}
}
viewModel.priceLiveData.observe(this) {
if (it > 0) {
binding.tvChangeNickname.text = "${it}캔으로 닉네임 변경하기"
viewModel.priceLiveData.observe(this) { price ->
if (price > 0) {
binding.tvChangeNickname.text =
getString(R.string.screen_nickname_update_submit_with_can, price)
} else {
binding.tvChangeNickname.text = "닉네임 변경하기"
binding.tvChangeNickname.text = getString(R.string.screen_nickname_update_submit)
}
}
}

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.mypage.profile.ProfileUpdateRequest
import kr.co.vividnext.sodalive.user.UserRepository
@@ -21,8 +23,8 @@ class NicknameUpdateViewModel(private val repository: UserRepository) : BaseView
val isLoading: LiveData<Boolean>
get() = _isLoading
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
var isCheckedNickname = false
@@ -39,20 +41,18 @@ class NicknameUpdateViewModel(private val repository: UserRepository) : BaseView
_isLoading.value = false
if (it.success && it.data != null) {
_priceLiveData.value = it.data.price
} 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
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)
@@ -71,28 +71,28 @@ class NicknameUpdateViewModel(private val repository: UserRepository) : BaseView
_isLoading.value = false
if (it.success) {
isCheckedNickname = true
_toastLiveData.postValue("사용가능한 닉네임 입니다.")
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
_toastLiveData.postValue(
ToastMessage(resId = R.string.msg_nickname_update_available)
)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
it.message?.let { message ->
ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.common_error_unknown)
)
}
}
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)
} else {
_toastLiveData.postValue("닉네임을 입력하세요.")
_toastLiveData.postValue(
ToastMessage(resId = R.string.msg_nickname_update_input_required)
)
}
}
@@ -113,30 +113,30 @@ class NicknameUpdateViewModel(private val repository: UserRepository) : BaseView
{
_isLoading.value = false
if (it.success) {
_toastLiveData.postValue("닉네임이 변경되었습니다.")
_toastLiveData.postValue(
ToastMessage(resId = R.string.msg_nickname_update_success)
)
SharedPreferenceManager.nickname = nickname
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
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)
} else {
_toastLiveData.postValue("닉네임 중복체크를 해주세요.")
_toastLiveData.postValue(
ToastMessage(resId = R.string.msg_nickname_update_check_required)
)
}
}
}

View File

@@ -25,7 +25,7 @@
android:layout_marginHorizontal="20dp"
android:layout_marginTop="40dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="닉네임 변경으로 인해 피해를 입는 사용자가 지속적으로 발생하여 닉네임 변경을 부득이하게 유료로 전환합니다."
android:text="@string/screen_nickname_update_notice_primary"
android:textColor="@color/color_eeeeee" />
<TextView
@@ -33,7 +33,7 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="최초 1회에 한해서 무료로 변경이 가능하고, 그 이후부터는 유료로 전환됩니다."
android:text="@string/screen_nickname_update_notice_secondary"
android:textColor="@color/color_dd4500" />
<LinearLayout
@@ -48,7 +48,7 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="6.7dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="닉네임 (최대 12자)"
android:text="@string/screen_nickname_update_label"
android:textColor="@color/color_eeeeee"
android:textSize="12sp" />
@@ -58,7 +58,7 @@
android:layout_height="wrap_content"
android:background="@drawable/edittext_underline"
android:fontFamily="@font/gmarket_sans_medium"
android:hint="닉네임"
android:hint="@string/screen_nickname_update_hint"
android:importantForAutofill="no"
android:inputType="textWebEditText"
android:maxLength="12"
@@ -81,7 +81,7 @@
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:paddingVertical="13.3dp"
android:text="중복확인"
android:text="@string/screen_nickname_update_check"
android:textColor="@color/color_eeeeee" />
</LinearLayout>
</ScrollView>
@@ -103,6 +103,7 @@
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:paddingVertical="16dp"
android:text="@string/screen_nickname_update_submit"
android:textColor="@color/white"
android:textSize="18.3sp"
tools:text="1000캔으로 닉네임 변경하기" />

View File

@@ -341,6 +341,19 @@
<string name="screen_modify_password_new_confirm_hint">Re-enter the new password</string>
<string name="screen_modify_password_requirement">* At least 8 characters with letters and numbers</string>
<string name="screen_modify_password_submit">Update password</string>
<!-- Nickname Update -->
<string name="screen_nickname_update_title">Change nickname</string>
<string name="screen_nickname_update_notice_primary">Because some users keep being harmed by nickname changes, we must switch nickname changes to a paid feature.</string>
<string name="screen_nickname_update_notice_secondary">Your first change is free. All later changes will be paid.</string>
<string name="screen_nickname_update_label">Nickname (up to 12 characters)</string>
<string name="screen_nickname_update_hint">Nickname</string>
<string name="screen_nickname_update_check">Check availability</string>
<string name="screen_nickname_update_submit">Change nickname</string>
<string name="screen_nickname_update_submit_with_can">Change nickname with %1$d cans</string>
<string name="msg_nickname_update_available">Nickname is available.</string>
<string name="msg_nickname_update_input_required">Please enter a nickname.</string>
<string name="msg_nickname_update_success">Nickname changed.</string>
<string name="msg_nickname_update_check_required">Please check nickname availability.</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

@@ -341,6 +341,19 @@
<string name="screen_modify_password_new_confirm_hint">新しいパスワードをもう一度入力してください</string>
<string name="screen_modify_password_requirement">* 英数字8文字以上</string>
<string name="screen_modify_password_submit">パスワードを変更</string>
<!-- Nickname Update -->
<string name="screen_nickname_update_title">ニックネーム変更</string>
<string name="screen_nickname_update_notice_primary">ニックネーム変更による被害が継続的に発生しているため、やむを得ず有料に切り替えます。</string>
<string name="screen_nickname_update_notice_secondary">初回1回のみ無料で変更でき、それ以降は有料になります。</string>
<string name="screen_nickname_update_label">ニックネーム最大12文字</string>
<string name="screen_nickname_update_hint">ニックネーム</string>
<string name="screen_nickname_update_check">重複確認</string>
<string name="screen_nickname_update_submit">ニックネームを変更</string>
<string name="screen_nickname_update_submit_with_can">%1$dCANでニックネームを変更</string>
<string name="msg_nickname_update_available">使用可能なニックネームです。</string>
<string name="msg_nickname_update_input_required">ニックネームを入力してください。</string>
<string name="msg_nickname_update_success">ニックネームを変更しました。</string>
<string name="msg_nickname_update_check_required">ニックネームの重複チェックを行ってください。</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

@@ -340,6 +340,19 @@
<string name="screen_modify_password_new_confirm_hint">신규 비밀번호를 재입력해주세요</string>
<string name="screen_modify_password_requirement">* 영문, 숫자 포함 8자 이상</string>
<string name="screen_modify_password_submit">비밀번호 변경하기</string>
<!-- Nickname Update -->
<string name="screen_nickname_update_title">닉네임 변경</string>
<string name="screen_nickname_update_notice_primary">닉네임 변경으로 인해 피해를 입는 사용자가 지속적으로 발생하여 닉네임 변경을 부득이하게 유료로 전환합니다.</string>
<string name="screen_nickname_update_notice_secondary">최초 1회에 한해서 무료로 변경이 가능하고, 그 이후부터는 유료로 전환됩니다.</string>
<string name="screen_nickname_update_label">닉네임 (최대 12자)</string>
<string name="screen_nickname_update_hint">닉네임</string>
<string name="screen_nickname_update_check">중복확인</string>
<string name="screen_nickname_update_submit">닉네임 변경하기</string>
<string name="screen_nickname_update_submit_with_can">%1$d캔으로 닉네임 변경하기</string>
<string name="msg_nickname_update_available">사용가능한 닉네임 입니다.</string>
<string name="msg_nickname_update_input_required">닉네임을 입력하세요.</string>
<string name="msg_nickname_update_success">닉네임이 변경되었습니다.</string>
<string name="msg_nickname_update_check_required">닉네임 중복체크를 해주세요.</string>
<string name="screen_my_view_channel">내 채널 보기</string>
<string name="screen_my_charge_can">캔 충전</string>
<string name="screen_my_point_reward">포인트 리워드</string>