From e9afa55aa04ecf6ac03ed07ae1a62916ca1f7fb7 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 1 Dec 2025 15:12:02 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=85=98=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=20=EB=A6=AC=EC=86=8C=EC=8A=A4=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EA=B4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/audition/AuditionFragment.kt | 9 +++++++-- .../sodalive/audition/AuditionListAdapter.kt | 9 ++++----- .../sodalive/audition/AuditionViewModel.kt | 14 +++++++++----- app/src/main/res/layout/fragment_audition.xml | 6 +++--- .../layout/item_audition_list_completed_header.xml | 5 +++-- .../item_audition_list_in_progress_header.xml | 5 +++-- app/src/main/res/values-en/strings.xml | 8 ++++++++ app/src/main/res/values-ja/strings.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 8 ++++++++ 9 files changed, 53 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionFragment.kt index b939f1c3..586da6a6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionFragment.kt @@ -124,8 +124,13 @@ class AuditionFragment : BaseFragment( } private fun bindData() { - viewModel.toastLiveData.observe(viewLifecycleOwner) { - it?.let { Toast.makeText(requireActivity(), it, Toast.LENGTH_LONG).show() } + viewModel.toastLiveData.observe(viewLifecycleOwner) { toastMessage -> + toastMessage?.let { + val message = it.message ?: it.resId?.let(::getString) + message?.let { text -> + Toast.makeText(requireActivity(), text, Toast.LENGTH_LONG).show() + } + } } viewModel.isLoading.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionListAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionListAdapter.kt index 2220231e..103e727b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionListAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionListAdapter.kt @@ -1,6 +1,5 @@ package kr.co.vividnext.sodalive.audition -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -47,18 +46,18 @@ class AuditionListAdapter( inner class InProgressHeaderViewHolder( private val binding: ItemAuditionListInProgressHeaderBinding ) : RecyclerView.ViewHolder(binding.root) { - @SuppressLint("SetTextI18n") fun bind(totalCount: Int) { - binding.tvTotalCount.text = "총 ${totalCount}개" + binding.tvTotalCount.text = + binding.root.context.getString(R.string.screen_audition_total_count, totalCount) } } inner class CompletedHeaderViewHolder( private val binding: ItemAuditionListCompletedHeaderBinding ) : RecyclerView.ViewHolder(binding.root) { - @SuppressLint("SetTextI18n") fun bind(totalCount: Int) { - binding.tvTotalCount.text = "총 ${totalCount}개" + binding.tvTotalCount.text = + binding.root.context.getString(R.string.screen_audition_total_count, totalCount) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionViewModel.kt index b216855b..e87748c1 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audition/AuditionViewModel.kt @@ -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.R import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.ToastMessage import kr.co.vividnext.sodalive.settings.notification.UpdateNotificationSettingRequest import kr.co.vividnext.sodalive.user.UserRepository @@ -14,8 +16,8 @@ class AuditionViewModel( private val repository: AuditionRepository, private val userRepository: UserRepository ) : BaseViewModel() { - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -53,10 +55,10 @@ class AuditionViewModel( } } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } @@ -64,7 +66,9 @@ class AuditionViewModel( { _isLoading.postValue(false) it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/res/layout/fragment_audition.xml b/app/src/main/res/layout/fragment_audition.xml index 4f0bc57a..fcbb4f5b 100644 --- a/app/src/main/res/layout/fragment_audition.xml +++ b/app/src/main/res/layout/fragment_audition.xml @@ -17,7 +17,7 @@ android:fontFamily="@font/pretendard_bold" android:gravity="center" android:minHeight="48dp" - android:text="오디션" + android:text="@string/screen_audition_title" android:textColor="@color/color_eeeeee" android:textSize="21.3sp" app:drawableStartCompat="@drawable/ic_back" @@ -55,7 +55,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_medium" - android:text="보이스온 오디션 이용방법" + android:text="@string/screen_audition_how_to_use" android:textColor="@color/white" android:textSize="13.3sp" /> @@ -65,7 +65,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_medium" - android:text="자세히>" + android:text="@string/screen_audition_how_to_use_more" android:textColor="@color/white" android:textSize="13.3sp" /> diff --git a/app/src/main/res/layout/item_audition_list_completed_header.xml b/app/src/main/res/layout/item_audition_list_completed_header.xml index b802c21e..f018e29a 100644 --- a/app/src/main/res/layout/item_audition_list_completed_header.xml +++ b/app/src/main/res/layout/item_audition_list_completed_header.xml @@ -21,7 +21,7 @@ android:layout_height="wrap_content" android:layout_marginTop="30dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="오디션" + android:text="@string/screen_audition_title" android:textColor="@color/color_eeeeee" android:textSize="18.3sp" app:layout_constraintStart_toStartOf="parent" @@ -31,8 +31,9 @@ android:id="@+id/tv_audition_title_off" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="4dp" android:fontFamily="@font/gmarket_sans_bold" - android:text=" OFF" + android:text="@string/screen_audition_off" android:textColor="@color/color_bbbbbb" android:textSize="18.3sp" app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title" diff --git a/app/src/main/res/layout/item_audition_list_in_progress_header.xml b/app/src/main/res/layout/item_audition_list_in_progress_header.xml index 84331cec..0d125796 100644 --- a/app/src/main/res/layout/item_audition_list_in_progress_header.xml +++ b/app/src/main/res/layout/item_audition_list_in_progress_header.xml @@ -10,7 +10,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="오디션" + android:text="@string/screen_audition_title" android:textColor="@color/color_eeeeee" android:textSize="18.3sp" app:layout_constraintStart_toStartOf="parent" @@ -20,8 +20,9 @@ android:id="@+id/tv_audition_title_on" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="4dp" android:fontFamily="@font/gmarket_sans_bold" - android:text=" ON" + android:text="@string/screen_audition_on" android:textColor="@color/color_ff5c49" android:textSize="18.3sp" app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title" diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 790a93dc..d1faf75a 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -185,6 +185,14 @@ creators You are not following any channels. + + Audition + ON + OFF + Total %1$d + How to use VoiceOn audition + See details> + Settings Notification settings diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 21b7d180..b6f310a7 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -185,6 +185,14 @@ フォロー中のチャンネルがありません。 + + オーディション + ON + OFF + 合計 %1$d件 + ボイスオンオーディションの利用方法 + 詳しく> + 設定 通知設定 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 202757da..f4f429f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -184,6 +184,14 @@ 팔로우 중인 채널이 없습니다. + + 오디션 + ON + OFF + 총 %1$d개 + 보이스온 오디션 이용방법 + 자세히> + 설정 알림 설정