마이페이지 문자열 리소스화

This commit is contained in:
2025-12-01 12:28:46 +09:00
parent 707dc351ba
commit bca527eca0
6 changed files with 120 additions and 52 deletions

View File

@@ -234,7 +234,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnStorage.root,
iconRes = R.drawable.ic_my_storage,
title = "보관함"
title = getString(R.string.screen_my_storage)
) {
startActivity(
Intent(
@@ -247,7 +247,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnBlockList.root,
iconRes = R.drawable.ic_my_block,
title = "차단목록"
title = getString(R.string.screen_my_block_list)
) {
startActivity(
Intent(
@@ -260,7 +260,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnMorningCall.root,
iconRes = R.drawable.ic_my_alarm,
title = "모닝콜"
title = getString(R.string.screen_my_morning_call)
) {
startActivity(
Intent(
@@ -273,7 +273,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnNotice.root,
iconRes = R.drawable.ic_my_notice,
title = "공지사항"
title = getString(R.string.screen_my_notice)
) {
startActivity(
Intent(
@@ -286,7 +286,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnEvent.root,
iconRes = R.drawable.ic_my_event,
title = "이벤트"
title = getString(R.string.screen_my_event)
) {
startActivity(
Intent(
@@ -299,7 +299,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnCustomerService.root,
iconRes = R.drawable.ic_my_service_center,
title = "고객센터"
title = getString(R.string.screen_my_customer_service)
) {
startActivity(
Intent(
@@ -310,21 +310,21 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
}
if (SharedPreferenceManager.role == MemberRole.CREATOR.name) {
binding.tvMyChannel.visibility = View.VISIBLE
binding.tvMyChannel.setOnClickListener {
startActivity(
Intent(
requireContext(),
UserProfileActivity::class.java
).apply {
putExtra(
Constants.EXTRA_USER_ID,
SharedPreferenceManager.userId
)
}
)
}
} else {
binding.tvMyChannel.visibility = View.VISIBLE
binding.tvMyChannel.setOnClickListener {
startActivity(
Intent(
requireContext(),
UserProfileActivity::class.java
).apply {
putExtra(
Constants.EXTRA_USER_ID,
SharedPreferenceManager.userId
)
}
)
}
} else {
binding.tvMyChannel.visibility = View.GONE
}
} else {
@@ -355,7 +355,10 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
@SuppressLint("SetTextI18n", "NotifyDataSetChanged")
private fun bindData() {
viewModel.toastLiveData.observe(viewLifecycleOwner) {
it?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show() }
val text = it?.message ?: it?.resId?.let { resId -> getString(resId) }
if (!text.isNullOrBlank()) {
Toast.makeText(requireContext(), text, Toast.LENGTH_LONG).show()
}
}
viewModel.isLoading.observe(viewLifecycleOwner) {
@@ -371,13 +374,13 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnIdentityVerification.root,
iconRes = R.drawable.ic_my_auth,
title = "인증완료"
title = getString(R.string.screen_my_identity_verified)
)
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnCoupon.root,
iconRes = R.drawable.ic_my_coupon,
title = "쿠폰등록"
title = getString(R.string.screen_my_coupon_register)
) {
startActivity(
Intent(
@@ -390,7 +393,7 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnIdentityVerification.root,
iconRes = R.drawable.ic_my_auth,
title = "본인인증"
title = getString(R.string.screen_my_identity_verification)
) {
showAuthDialog()
}
@@ -398,11 +401,11 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
FunctionButtonHelper.setupFunctionButton(
buttonView = binding.btnCoupon.root,
iconRes = R.drawable.ic_my_coupon,
title = "쿠폰등록"
title = getString(R.string.screen_my_coupon_register)
) {
Toast.makeText(
requireContext(),
"본인인증 후 사용가능합니다.",
getString(R.string.screen_my_auth_required),
Toast.LENGTH_LONG
).show()

View File

@@ -1,5 +1,6 @@
package kr.co.vividnext.sodalive.mypage
import androidx.annotation.StringRes
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
@@ -14,14 +15,15 @@ import kr.co.vividnext.sodalive.settings.ContentType
import kr.co.vividnext.sodalive.settings.notice.NoticeItem
import kr.co.vividnext.sodalive.settings.notice.NoticeRepository
import kr.co.vividnext.sodalive.user.UserRepository
import kr.co.vividnext.sodalive.R
class MyPageViewModel(
private val userRepository: UserRepository,
private val authRepository: AuthRepository,
private val noticeRepository: NoticeRepository
) : BaseViewModel() {
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<MyPageToastMessage?>()
val toastLiveData: LiveData<MyPageToastMessage?>
get() = _toastLiveData
private var _isLoading = MutableLiveData(false)
@@ -50,20 +52,22 @@ class MyPageViewModel(
if (it.success && it.data != null) {
_myPageLiveData.postValue(it.data!!)
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
}
_toastLiveData.postValue(
if (it.message != null) {
MyPageToastMessage(message = it.message)
} else {
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
}
)
}
_isLoading.value = false
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
)
}
)
)
@@ -89,13 +93,13 @@ class MyPageViewModel(
onSuccess()
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
}
_toastLiveData.postValue(
if (it.message != null) {
MyPageToastMessage(message = it.message)
} else {
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
}
)
_isLoading.value = false
}
@@ -103,7 +107,9 @@ class MyPageViewModel(
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
)
}
)
)
@@ -130,3 +136,8 @@ class MyPageViewModel(
)
}
}
data class MyPageToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)

View File

@@ -71,7 +71,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:fontFamily="@font/pretendard_regular"
android:text="자세히"
android:text="@string/screen_my_notice_more"
android:textColor="#B0BEC5"
android:textSize="16sp"
app:drawableEndCompat="@drawable/ic_arrow_right" />
@@ -107,7 +107,7 @@
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold"
android:gravity="center_vertical"
android:text="LOGIN"
android:text="@string/screen_my_login"
android:textColor="#777777"
android:textSize="32sp" />
@@ -158,7 +158,7 @@
android:fontFamily="@font/pretendard_regular"
android:paddingHorizontal="12dp"
android:paddingVertical="6dp"
android:text="프로필 수정"
android:text="@string/screen_my_edit_profile"
android:textColor="#FFFFFF"
android:textSize="14sp" />
</RelativeLayout>
@@ -173,7 +173,7 @@
android:fontFamily="@font/pretendard_bold"
android:gravity="center"
android:paddingVertical="12dp"
android:text="내 채널 보기"
android:text="@string/screen_my_view_channel"
android:textColor="#FFFFFF"
android:textSize="16sp"
android:visibility="gone" />
@@ -220,7 +220,7 @@
android:fontFamily="@font/pretendard_bold"
android:paddingHorizontal="16dp"
android:paddingVertical="10dp"
android:text="캔 충전"
android:text="@string/screen_my_charge_can"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:visibility="invisible" />
@@ -258,7 +258,7 @@
android:fontFamily="@font/pretendard_bold"
android:paddingHorizontal="16dp"
android:paddingVertical="10dp"
android:text="포인트 리워드"
android:text="@string/screen_my_point_reward"
android:textColor="#FFFFFF"
android:textSize="14sp"
android:visibility="invisible" />
@@ -388,7 +388,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold"
android:text="최근 들은 "
android:text="@string/screen_my_recent_prefix"
android:textColor="#B0BEC5"
android:textSize="16sp" />

View File

@@ -136,4 +136,22 @@
<string name="screen_live_reservation_pay_title">Reserve with %1$s cans</string>
<string name="screen_live_reservation_pay_desc">Pay to join the live \"%1$s\".</string>
<string name="screen_live_reservation_confirm">Reserve</string>
<string name="screen_my_notice_more">Details</string>
<string name="screen_my_login">Login</string>
<string name="screen_my_edit_profile">Edit profile</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>
<string name="screen_my_recent_prefix">Recently listened</string>
<string name="screen_my_storage">Storage</string>
<string name="screen_my_block_list">Blocked users</string>
<string name="screen_my_morning_call">Morning call</string>
<string name="screen_my_notice">Notice</string>
<string name="screen_my_event">Event</string>
<string name="screen_my_customer_service">Customer service</string>
<string name="screen_my_identity_verified">Verified</string>
<string name="screen_my_identity_verification">Verify identity</string>
<string name="screen_my_coupon_register">Register coupon</string>
<string name="screen_my_auth_required">Available after identity verification.</string>
<string name="screen_my_error_unknown">An unknown error occurred. Please try again.</string>
</resources>

View File

@@ -136,4 +136,22 @@
<string name="screen_live_reservation_pay_title">%1$sCANで予約</string>
<string name="screen_live_reservation_pay_desc">ライブ「%1$s」に参加するために決済します。</string>
<string name="screen_live_reservation_confirm">予約する</string>
<string name="screen_my_notice_more">詳細</string>
<string name="screen_my_login">ログイン</string>
<string name="screen_my_edit_profile">プロフィール編集</string>
<string name="screen_my_view_channel">マイチャンネルを見る</string>
<string name="screen_my_charge_can">CANチャージ</string>
<string name="screen_my_point_reward">ポイントリワード</string>
<string name="screen_my_recent_prefix">最近聴いた</string>
<string name="screen_my_storage">保存箱</string>
<string name="screen_my_block_list">ブロック一覧</string>
<string name="screen_my_morning_call">モーニングコール</string>
<string name="screen_my_notice">お知らせ</string>
<string name="screen_my_event">イベント</string>
<string name="screen_my_customer_service">カスタマーセンター</string>
<string name="screen_my_identity_verified">認証済み</string>
<string name="screen_my_identity_verification">本人認証</string>
<string name="screen_my_coupon_register">クーポン登録</string>
<string name="screen_my_auth_required">本人認証後に利用できます。</string>
<string name="screen_my_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
</resources>

View File

@@ -135,4 +135,22 @@
<string name="screen_live_reservation_pay_title">%1$s캔으로 예약</string>
<string name="screen_live_reservation_pay_desc">\'%1$s\' 라이브에 참여하기 위해 결제합니다.</string>
<string name="screen_live_reservation_confirm">예약하기</string>
<string name="screen_my_notice_more">자세히</string>
<string name="screen_my_login">LOGIN</string>
<string name="screen_my_edit_profile">프로필 수정</string>
<string name="screen_my_view_channel">내 채널 보기</string>
<string name="screen_my_charge_can">캔 충전</string>
<string name="screen_my_point_reward">포인트 리워드</string>
<string name="screen_my_recent_prefix">최근 들은 </string>
<string name="screen_my_storage">보관함</string>
<string name="screen_my_block_list">차단목록</string>
<string name="screen_my_morning_call">모닝콜</string>
<string name="screen_my_notice">공지사항</string>
<string name="screen_my_event">이벤트</string>
<string name="screen_my_customer_service">고객센터</string>
<string name="screen_my_identity_verified">인증완료</string>
<string name="screen_my_identity_verification">본인인증</string>
<string name="screen_my_coupon_register">쿠폰등록</string>
<string name="screen_my_auth_required">본인인증 후 사용가능합니다.</string>
<string name="screen_my_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
</resources>