캔 내역 화면 문자열 리소스화

This commit is contained in:
2025-12-02 14:22:07 +09:00
parent 50edf85de5
commit 98a6fb6637
6 changed files with 80 additions and 50 deletions

View File

@@ -39,7 +39,7 @@ class CanStatusActivity : BaseActivity<ActivityCanStatusBinding>(
}
override fun setupView() {
binding.toolbar.tvBack.text = "캔내역"
binding.toolbar.tvBack.text = getString(R.string.screen_can_status_title)
binding.toolbar.tvBack.setOnClickListener { onClickBackButton() }
binding.flChargeCan.setOnClickListener {
startActivity(
@@ -52,8 +52,16 @@ class CanStatusActivity : BaseActivity<ActivityCanStatusBinding>(
loadingDialog = LoadingDialog(this, layoutInflater)
val tabs = binding.tabs
tabs.addTab(tabs.newTab().setText("충전내역").setTag("charge_status"))
tabs.addTab(tabs.newTab().setText("사용내역").setTag("use_status"))
tabs.addTab(
tabs.newTab()
.setText(R.string.screen_can_status_tab_charge)
.setTag("charge_status")
)
tabs.addTab(
tabs.newTab()
.setText(R.string.screen_can_status_tab_use)
.setTag("use_status")
)
changeFragment("charge_status")
@@ -113,7 +121,10 @@ class CanStatusActivity : BaseActivity<ActivityCanStatusBinding>(
}
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
import kr.co.vividnext.sodalive.mypage.can.status.charge.GetCanChargeStatusResponseItem
import kr.co.vividnext.sodalive.mypage.can.status.use.GetCanUseStatusResponseItem
@@ -32,8 +34,8 @@ class CanStatusViewModel(private val repository: CanRepository) : BaseViewModel(
val canChargeStatusLiveData: LiveData<List<GetCanChargeStatusResponseItem>>
get() = _canChargeStatusLiveData
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
private var _isLoading = MutableLiveData(false)
@@ -57,19 +59,17 @@ class CanStatusViewModel(private val repository: CanRepository) : BaseViewModel(
_paidCanLiveData.postValue(it.data.chargeCan)
_rewardCanLiveData.postValue(it.data.rewardCan)
} 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
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)
@@ -91,19 +91,17 @@ class CanStatusViewModel(private val repository: CanRepository) : BaseViewModel(
if (it.success && it.data != null) {
_canUseStatusLiveData.postValue(it.data!!)
} 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
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)
@@ -125,19 +123,17 @@ class CanStatusViewModel(private val repository: CanRepository) : BaseViewModel(
if (it.success && it.data != null) {
_canChargeStatusLiveData.postValue(it.data!!)
} 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
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown))
}
)
)

View File

@@ -60,7 +60,7 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:fontFamily="@font/gmarket_sans_light"
android:text="결제 캔"
android:text="@string/screen_can_status_label_paid"
android:textColor="@color/color_777777"
android:textSize="12sp" />
@@ -86,7 +86,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="6.7dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text=""
android:text="@string/screen_can_status_unit"
android:textColor="@color/color_bbbbbb"
android:textSize="10.7sp"
tools:ignore="SmallSp" />
@@ -110,7 +110,7 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:fontFamily="@font/gmarket_sans_light"
android:text="리워드 캔"
android:text="@string/screen_can_status_label_reward"
android:textColor="@color/color_777777"
android:textSize="12sp" />
@@ -136,7 +136,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="6.7dp"
android:fontFamily="@font/gmarket_sans_medium"
android:text=""
android:text="@string/screen_can_status_unit"
android:textColor="@color/color_bbbbbb"
android:textSize="10.7sp"
tools:ignore="SmallSp" />
@@ -177,23 +177,22 @@
android:id="@+id/fl_charge_can"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginVertical="13.7dp"
android:layout_weight="2"
android:background="@drawable/bg_round_corner_10_80d8ff"
android:paddingVertical="16dp">
android:layout_marginVertical="13.7dp"
android:layout_weight="2"
android:background="@drawable/bg_round_corner_10_80d8ff"
android:paddingVertical="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawablePadding="6.7dp"
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:text="충전하기"
android:textColor="@color/color_1313bc"
android:textSize="18.3sp"
app:drawableStartCompat="@drawable/ic_can" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawablePadding="6.7dp"
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:text="@string/screen_can_status_charge_action"
android:textColor="@color/color_1313bc"
android:textSize="18.3sp"
app:drawableStartCompat="@drawable/ic_can" />
</FrameLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -362,6 +362,14 @@
<string name="screen_point_status_tab_reward">Earned</string>
<string name="screen_point_status_tab_use">Used</string>
<string name="screen_point_status_notice">※ Earned points expire after 72 hours.</string>
<!-- Can Status -->
<string name="screen_can_status_title">Can history</string>
<string name="screen_can_status_tab_charge">Top-ups</string>
<string name="screen_can_status_tab_use">Usage</string>
<string name="screen_can_status_label_paid">Paid cans</string>
<string name="screen_can_status_label_reward">Reward cans</string>
<string name="screen_can_status_unit">cans</string>
<string name="screen_can_status_charge_action">Top up</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

@@ -362,6 +362,14 @@
<string name="screen_point_status_tab_reward">獲得履歴</string>
<string name="screen_point_status_tab_use">使用履歴</string>
<string name="screen_point_status_notice">※ 獲得したポイントは72時間後に自動失効します。</string>
<!-- Can Status -->
<string name="screen_can_status_title">CAN履歴</string>
<string name="screen_can_status_tab_charge">チャージ履歴</string>
<string name="screen_can_status_tab_use">使用履歴</string>
<string name="screen_can_status_label_paid">決済CAN</string>
<string name="screen_can_status_label_reward">リワードCAN</string>
<string name="screen_can_status_unit">CAN</string>
<string name="screen_can_status_charge_action">チャージする</string>
<!-- Service Center -->
<string name="screen_service_center_title">カスタマーセンター</string>
<string name="screen_service_center_logo_label">VoiceOn カスタマーセンター</string>

View File

@@ -361,6 +361,14 @@
<string name="screen_point_status_tab_reward">받은내역</string>
<string name="screen_point_status_tab_use">사용내역</string>
<string name="screen_point_status_notice">※ 획득한 포인트는 72시간이 지나면 자동소멸 됩니다.</string>
<!-- Can Status -->
<string name="screen_can_status_title">캔내역</string>
<string name="screen_can_status_tab_charge">충전내역</string>
<string name="screen_can_status_tab_use">사용내역</string>
<string name="screen_can_status_label_paid">결제 캔</string>
<string name="screen_can_status_label_reward">리워드 캔</string>
<string name="screen_can_status_unit"></string>
<string name="screen_can_status_charge_action">충전하기</string>
<!-- Service Center -->
<string name="screen_service_center_title">고객센터</string>
<string name="screen_service_center_logo_label">보이스온 고객센터</string>