diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt index c0dc950a..c846313e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt @@ -234,7 +234,7 @@ class MyPageFragment : BaseFragment(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::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::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::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::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::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::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::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::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::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::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() diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageViewModel.kt index ef93f367..8cf4e48e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageViewModel.kt @@ -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() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData 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 +) diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml index 2bb55944..0857134c 100644 --- a/app/src/main/res/layout/fragment_my.xml +++ b/app/src/main/res/layout/fragment_my.xml @@ -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" /> @@ -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" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index f8194c52..b363858c 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -136,4 +136,22 @@ Reserve with %1$s cans Pay to join the live \"%1$s\". Reserve + Details + Login + Edit profile + View my channel + Charge cans + Point reward + Recently listened + Storage + Blocked users + Morning call + Notice + Event + Customer service + Verified + Verify identity + Register coupon + Available after identity verification. + An unknown error occurred. Please try again. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f6322ad3..80a0aab1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -136,4 +136,22 @@ %1$sCANで予約 ライブ「%1$s」に参加するために決済します。 予約する + 詳細 + ログイン + プロフィール編集 + マイチャンネルを見る + CANチャージ + ポイントリワード + 最近聴いた + 保存箱 + ブロック一覧 + モーニングコール + お知らせ + イベント + カスタマーセンター + 認証済み + 本人認証 + クーポン登録 + 本人認証後に利用できます。 + 不明なエラーが発生しました。もう一度お試しください。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2aec1c7b..01945eec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -135,4 +135,22 @@ %1$s캔으로 예약 \'%1$s\' 라이브에 참여하기 위해 결제합니다. 예약하기 + 자세히 + LOGIN + 프로필 수정 + 내 채널 보기 + 캔 충전 + 포인트 리워드 + 최근 들은 + 보관함 + 차단목록 + 모닝콜 + 공지사항 + 이벤트 + 고객센터 + 인증완료 + 본인인증 + 쿠폰등록 + 본인인증 후 사용가능합니다. + 알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.