쿠폰 등록 화면 문자열 리소스화

This commit is contained in:
2025-12-02 15:23:19 +09:00
parent 3cfab2c57b
commit 7023324920
6 changed files with 61 additions and 24 deletions

View File

@@ -4,6 +4,7 @@ import android.os.Bundle
import android.text.InputFilter
import android.widget.Toast
import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.databinding.ActivityCanCouponBinding
import org.koin.android.ext.android.inject
@@ -25,7 +26,7 @@ class CanCouponActivity : BaseActivity<ActivityCanCouponBinding>(
override fun setupView() {
loadingDialog = LoadingDialog(this, layoutInflater)
binding.toolbar.tvBack.text = "쿠폰등록"
binding.toolbar.tvBack.text = getString(R.string.screen_can_coupon_title)
binding.toolbar.tvBack.setOnClickListener { finish() }
binding.etCouponNumber.filters = arrayOf(InputFilter.AllCaps())
@@ -37,7 +38,10 @@ class CanCouponActivity : BaseActivity<ActivityCanCouponBinding>(
private fun bindData() {
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()
}
}
viewModel.isLoading.observe(this) {

View File

@@ -6,7 +6,9 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.ToastMessage
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.mypage.can.CanRepository
class CanCouponViewModel(private val repository: CanRepository) : BaseViewModel() {
@@ -14,8 +16,8 @@ class CanCouponViewModel(private val repository: CanRepository) : BaseViewModel(
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
fun useCoupon(couponNumber: String, onSuccess: () -> Unit) {
@@ -31,24 +33,22 @@ class CanCouponViewModel(private val repository: CanRepository) : BaseViewModel(
{
_isLoading.value = false
if (it.success && it.data != null) {
_toastLiveData.value = it.message
_toastLiveData.value = it.message?.let { message ->
ToastMessage(message = message)
}
onSuccess()
} else {
if (it.message != null) {
_toastLiveData.value = it.message
} else {
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
}
_toastLiveData.value = it.message?.let { message ->
ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.msg_can_coupon_unknown_error)
}
},
{
_isLoading.value = false
if (it.message != null) {
_toastLiveData.value = it.message
Logger.e(it.message!!)
} else {
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
}
it.message?.let { message -> Logger.e(message) }
_toastLiveData.value = it.message?.let { message ->
ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.msg_can_coupon_unknown_error)
}
)

View File

@@ -24,7 +24,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:text="쿠폰번호 입력"
android:text="@string/screen_can_coupon_input_title"
android:textColor="@color/color_eeeeee"
android:textSize="16.7sp" />
@@ -35,7 +35,7 @@
android:layout_marginTop="13.3dp"
android:background="@drawable/bg_round_corner_6_7_222222"
android:fontFamily="@font/gmarket_sans_medium"
android:hint="쿠폰번호를 입력해 주세요"
android:hint="@string/screen_can_coupon_input_hint"
android:importantForAutofill="no"
android:inputType="textCapCharacters"
android:maxEms="12"
@@ -57,7 +57,7 @@
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:paddingVertical="16dp"
android:text="등록하기"
android:text="@string/screen_can_coupon_submit"
android:textColor="@color/white"
android:textSize="18.3sp" />
@@ -74,7 +74,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:text="[등록 및 사용안내]"
android:text="@string/screen_can_coupon_guide_title"
android:textColor="@color/color_eeeeee"
android:textSize="13.3sp" />
@@ -85,7 +85,7 @@
android:fontFamily="@font/gmarket_sans_medium"
android:lineSpacingExtra="5sp"
android:paddingHorizontal="10dp"
android:text="- 공백없이 쿠폰번호 12자리를 입력해주세요.\n- 충전된 캔 또는 포인트는 해당 충전현황에서 확인할 수 있습니다.\n- 쿠폰으로 충전된 캔은 사용 전까지 소멸되지 않으며, 포인트는 충전 후 72시간 이내에 사용하지 않으면 자동 소멸됩니다."
android:text="@string/screen_can_coupon_guide_description"
android:textColor="@color/color_bbbbbb"
android:textSize="13.3sp" />
@@ -99,7 +99,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:text="[주의사항]"
android:text="@string/screen_can_coupon_notice_title"
android:textColor="@color/color_eeeeee"
android:textSize="13.3sp" />
@@ -110,7 +110,7 @@
android:fontFamily="@font/gmarket_sans_medium"
android:lineSpacingExtra="5sp"
android:paddingHorizontal="10dp"
android:text="- 이벤트 쿠폰을 통해 충전한 캔이나 포인트는 환불되지 않습니다.\n- 쿠폰은 상업적 용도로 사용하거나 매매할 수 없습니다.\n- 한번 등록한 쿠폰은 재사용이 불가합니다.\n- 연령 제한 정책에 따라 쿠폰이용은 본인인증한 회원만 이용 가능합니다."
android:text="@string/screen_can_coupon_notice_description"
android:textColor="@color/color_bbbbbb"
android:textSize="13.3sp" />
@@ -119,7 +119,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="13.3dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text="※ 쿠폰 등록 및 이용에 문제가 발생한 경우 '고객센터'로 문의주시기 바랍니다."
android:text="@string/screen_can_coupon_notice_support"
android:textColor="@color/color_eeeeee"
android:textSize="13.3sp" />
</LinearLayout>

View File

@@ -397,6 +397,17 @@
<string name="msg_can_payment_agree_required">You must agree before proceeding with payment.</string>
<string name="msg_can_payment_retry">Payment failed.\nPlease try again.</string>
<string name="msg_can_payment_init_failed">Failed to start payment.</string>
<!-- Can Coupon -->
<string name="screen_can_coupon_title">Register coupon</string>
<string name="screen_can_coupon_input_title">Enter coupon number</string>
<string name="screen_can_coupon_input_hint">Please enter the coupon number</string>
<string name="screen_can_coupon_submit">Register</string>
<string name="screen_can_coupon_guide_title">[Registration &amp; Usage Guide]</string>
<string name="screen_can_coupon_guide_description">- Enter the 12-digit coupon number without spaces.\n- You can check charged cans or points in the charge status screen.\n- Cans charged via coupon do not expire until used. Points expire automatically if unused within 72 hours.</string>
<string name="screen_can_coupon_notice_title">[Notice]</string>
<string name="screen_can_coupon_notice_description">- Cans or points charged via event coupons are non-refundable.\n- Coupons may not be sold or used for commercial purposes.\n- A registered coupon cannot be reused.\n- Coupon usage is limited to members who completed identity verification per policy.</string>
<string name="screen_can_coupon_notice_support">If you experience issues with coupon registration or usage, please contact Customer Service.</string>
<string name="msg_can_coupon_unknown_error">An unknown error occurred. Please try again.</string>
<!-- Service Center -->
<string name="screen_service_center_title">Customer service</string>
<string name="screen_service_center_logo_label">VoiceOn Customer Service</string>

View File

@@ -397,6 +397,17 @@
<string name="msg_can_payment_agree_required">決済の進行に同意する必要があります。</string>
<string name="msg_can_payment_retry">決済に失敗しました。\nもう一度お試しください。</string>
<string name="msg_can_payment_init_failed">決済の開始に失敗しました。</string>
<!-- Can Coupon -->
<string name="screen_can_coupon_title">クーポン登録</string>
<string name="screen_can_coupon_input_title">クーポン番号入力</string>
<string name="screen_can_coupon_input_hint">クーポン番号を入力してください</string>
<string name="screen_can_coupon_submit">登録する</string>
<string name="screen_can_coupon_guide_title">[登録および利用案内]</string>
<string name="screen_can_coupon_guide_description">- 12桁のクーポン番号を空白なしで入力してください。\n- 充電されたCANまたはポイントは該当する充電状況で確認できます。\n- クーポンで充電したCANは使用するまで失効せず、ポイントは充電後72時間以内に使用しないと自動失効します。</string>
<string name="screen_can_coupon_notice_title">[注意事項]</string>
<string name="screen_can_coupon_notice_description">- イベントクーポンでチャージしたCANやポイントは返金されません。\n- クーポンを商業目的で使用したり売買することはできません。\n- 一度登録したクーポンは再使用できません。\n- 年齢制限ポリシーにより、本人確認を完了した会員のみクーポンを利用できます。</string>
<string name="screen_can_coupon_notice_support">クーポン登録や利用に問題が発生した場合は「カスタマーセンター」にお問い合わせください。</string>
<string name="msg_can_coupon_unknown_error">不明なエラーが発生しました。もう一度お試しください。</string>
<!-- Service Center -->
<string name="screen_service_center_title">カスタマーセンター</string>
<string name="screen_service_center_logo_label">VoiceOn カスタマーセンター</string>

View File

@@ -396,6 +396,17 @@
<string name="msg_can_payment_agree_required">결제 진행에 동의하셔야 결제가 가능합니다.</string>
<string name="msg_can_payment_retry">결제를 하지 못했습니다.\n다시 시도해 주세요.</string>
<string name="msg_can_payment_init_failed">결제 초기화에 실패했습니다.</string>
<!-- Can Coupon -->
<string name="screen_can_coupon_title">쿠폰등록</string>
<string name="screen_can_coupon_input_title">쿠폰번호 입력</string>
<string name="screen_can_coupon_input_hint">쿠폰번호를 입력해 주세요</string>
<string name="screen_can_coupon_submit">등록하기</string>
<string name="screen_can_coupon_guide_title">[등록 및 사용안내]</string>
<string name="screen_can_coupon_guide_description">- 공백없이 쿠폰번호 12자리를 입력해주세요.\n- 충전된 캔 또는 포인트는 해당 충전현황에서 확인할 수 있습니다.\n- 쿠폰으로 충전된 캔은 사용 전까지 소멸되지 않으며, 포인트는 충전 후 72시간 이내에 사용하지 않으면 자동 소멸됩니다.</string>
<string name="screen_can_coupon_notice_title">[주의사항]</string>
<string name="screen_can_coupon_notice_description">- 이벤트 쿠폰을 통해 충전한 캔이나 포인트는 환불되지 않습니다.\n- 쿠폰은 상업적 용도로 사용하거나 매매할 수 없습니다.\n- 한번 등록한 쿠폰은 재사용이 불가합니다.\n- 연령 제한 정책에 따라 쿠폰이용은 본인인증한 회원만 이용 가능합니다.</string>
<string name="screen_can_coupon_notice_support">※ 쿠폰 등록 및 이용에 문제가 발생한 경우 \'고객센터\'로 문의주시기 바랍니다.</string>
<string name="msg_can_coupon_unknown_error">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<!-- Service Center -->
<string name="screen_service_center_title">고객센터</string>
<string name="screen_service_center_logo_label">보이스온 고객센터</string>