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

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() { override fun setupView() {
binding.toolbar.tvBack.text = "캔내역" binding.toolbar.tvBack.text = getString(R.string.screen_can_status_title)
binding.toolbar.tvBack.setOnClickListener { onClickBackButton() } binding.toolbar.tvBack.setOnClickListener { onClickBackButton() }
binding.flChargeCan.setOnClickListener { binding.flChargeCan.setOnClickListener {
startActivity( startActivity(
@@ -52,8 +52,16 @@ class CanStatusActivity : BaseActivity<ActivityCanStatusBinding>(
loadingDialog = LoadingDialog(this, layoutInflater) loadingDialog = LoadingDialog(this, layoutInflater)
val tabs = binding.tabs val tabs = binding.tabs
tabs.addTab(tabs.newTab().setText("충전내역").setTag("charge_status")) tabs.addTab(
tabs.addTab(tabs.newTab().setText("사용내역").setTag("use_status")) 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") changeFragment("charge_status")
@@ -113,7 +121,10 @@ class CanStatusActivity : BaseActivity<ActivityCanStatusBinding>(
} }
viewModel.toastLiveData.observe(this) { 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) { 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.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel 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.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.mypage.can.CanRepository 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.charge.GetCanChargeStatusResponseItem
import kr.co.vividnext.sodalive.mypage.can.status.use.GetCanUseStatusResponseItem 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>> val canChargeStatusLiveData: LiveData<List<GetCanChargeStatusResponseItem>>
get() = _canChargeStatusLiveData get() = _canChargeStatusLiveData
private val _toastLiveData = MutableLiveData<String?>() private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<String?> val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData get() = _toastLiveData
private var _isLoading = MutableLiveData(false) private var _isLoading = MutableLiveData(false)
@@ -57,19 +59,17 @@ class CanStatusViewModel(private val repository: CanRepository) : BaseViewModel(
_paidCanLiveData.postValue(it.data.chargeCan) _paidCanLiveData.postValue(it.data.chargeCan)
_rewardCanLiveData.postValue(it.data.rewardCan) _rewardCanLiveData.postValue(it.data.rewardCan)
} else { } else {
if (it.message != null) { _toastLiveData.postValue(
_toastLiveData.postValue(it.message) it.message?.let { message ->
} else { ToastMessage(message = message)
_toastLiveData.postValue( } ?: ToastMessage(resId = R.string.common_error_unknown)
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." )
)
}
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } 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) { if (it.success && it.data != null) {
_canUseStatusLiveData.postValue(it.data!!) _canUseStatusLiveData.postValue(it.data!!)
} else { } else {
if (it.message != null) { _toastLiveData.postValue(
_toastLiveData.postValue(it.message) it.message?.let { message ->
} else { ToastMessage(message = message)
_toastLiveData.postValue( } ?: ToastMessage(resId = R.string.common_error_unknown)
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." )
)
}
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } 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) { if (it.success && it.data != null) {
_canChargeStatusLiveData.postValue(it.data!!) _canChargeStatusLiveData.postValue(it.data!!)
} else { } else {
if (it.message != null) { _toastLiveData.postValue(
_toastLiveData.postValue(it.message) it.message?.let { message ->
} else { ToastMessage(message = message)
_toastLiveData.postValue( } ?: ToastMessage(resId = R.string.common_error_unknown)
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." )
)
}
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } 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_height="wrap_content"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:fontFamily="@font/gmarket_sans_light" android:fontFamily="@font/gmarket_sans_light"
android:text="결제 캔" android:text="@string/screen_can_status_label_paid"
android:textColor="@color/color_777777" android:textColor="@color/color_777777"
android:textSize="12sp" /> android:textSize="12sp" />
@@ -86,7 +86,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6.7dp" android:layout_marginStart="6.7dp"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="" android:text="@string/screen_can_status_unit"
android:textColor="@color/color_bbbbbb" android:textColor="@color/color_bbbbbb"
android:textSize="10.7sp" android:textSize="10.7sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
@@ -110,7 +110,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:fontFamily="@font/gmarket_sans_light" android:fontFamily="@font/gmarket_sans_light"
android:text="리워드 캔" android:text="@string/screen_can_status_label_reward"
android:textColor="@color/color_777777" android:textColor="@color/color_777777"
android:textSize="12sp" /> android:textSize="12sp" />
@@ -136,7 +136,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6.7dp" android:layout_marginStart="6.7dp"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="" android:text="@string/screen_can_status_unit"
android:textColor="@color/color_bbbbbb" android:textColor="@color/color_bbbbbb"
android:textSize="10.7sp" android:textSize="10.7sp"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
@@ -177,23 +177,22 @@
android:id="@+id/fl_charge_can" android:id="@+id/fl_charge_can"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginVertical="13.7dp" android:layout_marginVertical="13.7dp"
android:layout_weight="2" android:layout_weight="2"
android:background="@drawable/bg_round_corner_10_80d8ff" android:background="@drawable/bg_round_corner_10_80d8ff"
android:paddingVertical="16dp"> android:paddingVertical="16dp">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:drawablePadding="6.7dp" android:drawablePadding="6.7dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center" android:gravity="center"
android:text="충전하기" android:text="@string/screen_can_status_charge_action"
android:textColor="@color/color_1313bc" android:textColor="@color/color_1313bc"
android:textSize="18.3sp" android:textSize="18.3sp"
app:drawableStartCompat="@drawable/ic_can" /> app:drawableStartCompat="@drawable/ic_can" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>

View File

@@ -362,6 +362,14 @@
<string name="screen_point_status_tab_reward">Earned</string> <string name="screen_point_status_tab_reward">Earned</string>
<string name="screen_point_status_tab_use">Used</string> <string name="screen_point_status_tab_use">Used</string>
<string name="screen_point_status_notice">※ Earned points expire after 72 hours.</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 --> <!-- Service Center -->
<string name="screen_service_center_title">Customer service</string> <string name="screen_service_center_title">Customer service</string>
<string name="screen_service_center_logo_label">VoiceOn 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_reward">獲得履歴</string>
<string name="screen_point_status_tab_use">使用履歴</string> <string name="screen_point_status_tab_use">使用履歴</string>
<string name="screen_point_status_notice">※ 獲得したポイントは72時間後に自動失効します。</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 --> <!-- Service Center -->
<string name="screen_service_center_title">カスタマーセンター</string> <string name="screen_service_center_title">カスタマーセンター</string>
<string name="screen_service_center_logo_label">VoiceOn カスタマーセンター</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_reward">받은내역</string>
<string name="screen_point_status_tab_use">사용내역</string> <string name="screen_point_status_tab_use">사용내역</string>
<string name="screen_point_status_notice">※ 획득한 포인트는 72시간이 지나면 자동소멸 됩니다.</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 --> <!-- Service Center -->
<string name="screen_service_center_title">고객센터</string> <string name="screen_service_center_title">고객센터</string>
<string name="screen_service_center_logo_label">보이스온 고객센터</string> <string name="screen_service_center_logo_label">보이스온 고객센터</string>