오디션 문자열 리소스로 이관

This commit is contained in:
2025-12-01 15:12:02 +09:00
parent e727658b24
commit e9afa55aa0
9 changed files with 53 additions and 19 deletions

View File

@@ -124,8 +124,13 @@ class AuditionFragment : BaseFragment<FragmentAuditionBinding>(
} }
private fun bindData() { private fun bindData() {
viewModel.toastLiveData.observe(viewLifecycleOwner) { viewModel.toastLiveData.observe(viewLifecycleOwner) { toastMessage ->
it?.let { Toast.makeText(requireActivity(), it, Toast.LENGTH_LONG).show() } 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) { viewModel.isLoading.observe(viewLifecycleOwner) {

View File

@@ -1,6 +1,5 @@
package kr.co.vividnext.sodalive.audition package kr.co.vividnext.sodalive.audition
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@@ -47,18 +46,18 @@ class AuditionListAdapter(
inner class InProgressHeaderViewHolder( inner class InProgressHeaderViewHolder(
private val binding: ItemAuditionListInProgressHeaderBinding private val binding: ItemAuditionListInProgressHeaderBinding
) : RecyclerView.ViewHolder(binding.root) { ) : RecyclerView.ViewHolder(binding.root) {
@SuppressLint("SetTextI18n")
fun bind(totalCount: Int) { 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( inner class CompletedHeaderViewHolder(
private val binding: ItemAuditionListCompletedHeaderBinding private val binding: ItemAuditionListCompletedHeaderBinding
) : RecyclerView.ViewHolder(binding.root) { ) : RecyclerView.ViewHolder(binding.root) {
@SuppressLint("SetTextI18n")
fun bind(totalCount: Int) { fun bind(totalCount: Int) {
binding.tvTotalCount.text = "${totalCount}" binding.tvTotalCount.text =
binding.root.context.getString(R.string.screen_audition_total_count, totalCount)
} }
} }

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.R
import kr.co.vividnext.sodalive.common.SharedPreferenceManager 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.settings.notification.UpdateNotificationSettingRequest
import kr.co.vividnext.sodalive.user.UserRepository import kr.co.vividnext.sodalive.user.UserRepository
@@ -14,8 +16,8 @@ class AuditionViewModel(
private val repository: AuditionRepository, private val repository: AuditionRepository,
private val userRepository: UserRepository private val userRepository: UserRepository
) : BaseViewModel() { ) : BaseViewModel() {
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)
@@ -53,10 +55,10 @@ class AuditionViewModel(
} }
} else { } else {
if (it.message != null) { if (it.message != null) {
_toastLiveData.postValue(it.message) _toastLiveData.postValue(ToastMessage(message = it.message))
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." ToastMessage(resId = R.string.common_error_unknown)
) )
} }
} }
@@ -64,7 +66,9 @@ class AuditionViewModel(
{ {
_isLoading.postValue(false) _isLoading.postValue(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

@@ -17,7 +17,7 @@
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:gravity="center" android:gravity="center"
android:minHeight="48dp" android:minHeight="48dp"
android:text="오디션" android:text="@string/screen_audition_title"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="21.3sp" android:textSize="21.3sp"
app:drawableStartCompat="@drawable/ic_back" app:drawableStartCompat="@drawable/ic_back"
@@ -55,7 +55,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="보이스온 오디션 이용방법" android:text="@string/screen_audition_how_to_use"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13.3sp" /> android:textSize="13.3sp" />
@@ -65,7 +65,7 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:text="자세히>" android:text="@string/screen_audition_how_to_use_more"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13.3sp" /> android:textSize="13.3sp" />
</RelativeLayout> </RelativeLayout>

View File

@@ -21,7 +21,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="30dp" android:layout_marginTop="30dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="오디션" android:text="@string/screen_audition_title"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="18.3sp" android:textSize="18.3sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@@ -31,8 +31,9 @@
android:id="@+id/tv_audition_title_off" android:id="@+id/tv_audition_title_off"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text=" OFF" android:text="@string/screen_audition_off"
android:textColor="@color/color_bbbbbb" android:textColor="@color/color_bbbbbb"
android:textSize="18.3sp" android:textSize="18.3sp"
app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title" app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title"

View File

@@ -10,7 +10,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="오디션" android:text="@string/screen_audition_title"
android:textColor="@color/color_eeeeee" android:textColor="@color/color_eeeeee"
android:textSize="18.3sp" android:textSize="18.3sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@@ -20,8 +20,9 @@
android:id="@+id/tv_audition_title_on" android:id="@+id/tv_audition_title_on"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text=" ON" android:text="@string/screen_audition_on"
android:textColor="@color/color_ff5c49" android:textColor="@color/color_ff5c49"
android:textSize="18.3sp" android:textSize="18.3sp"
app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title" app:layout_constraintBottom_toBottomOf="@+id/tv_audition_title"

View File

@@ -185,6 +185,14 @@
<string name="following_creator_total_suffix">creators</string> <string name="following_creator_total_suffix">creators</string>
<string name="following_creator_empty">You are not following any channels.</string> <string name="following_creator_empty">You are not following any channels.</string>
<!-- Audition -->
<string name="screen_audition_title">Audition</string>
<string name="screen_audition_on">ON</string>
<string name="screen_audition_off">OFF</string>
<string name="screen_audition_total_count">Total %1$d</string>
<string name="screen_audition_how_to_use">How to use VoiceOn audition</string>
<string name="screen_audition_how_to_use_more">See details&gt;</string>
<!-- Settings / Notices / Events --> <!-- Settings / Notices / Events -->
<string name="screen_settings_title">Settings</string> <string name="screen_settings_title">Settings</string>
<string name="screen_settings_notification">Notification settings</string> <string name="screen_settings_notification">Notification settings</string>

View File

@@ -185,6 +185,14 @@
<string name="following_creator_total_suffix"></string> <string name="following_creator_total_suffix"></string>
<string name="following_creator_empty">フォロー中のチャンネルがありません。</string> <string name="following_creator_empty">フォロー中のチャンネルがありません。</string>
<!-- Audition -->
<string name="screen_audition_title">オーディション</string>
<string name="screen_audition_on">ON</string>
<string name="screen_audition_off">OFF</string>
<string name="screen_audition_total_count">合計 %1$d件</string>
<string name="screen_audition_how_to_use">ボイスオンオーディションの利用方法</string>
<string name="screen_audition_how_to_use_more">詳しく&gt;</string>
<!-- Settings / Notices / Events --> <!-- Settings / Notices / Events -->
<string name="screen_settings_title">設定</string> <string name="screen_settings_title">設定</string>
<string name="screen_settings_notification">通知設定</string> <string name="screen_settings_notification">通知設定</string>

View File

@@ -184,6 +184,14 @@
<string name="following_creator_total_suffix"></string> <string name="following_creator_total_suffix"></string>
<string name="following_creator_empty">팔로우 중인 채널이 없습니다.</string> <string name="following_creator_empty">팔로우 중인 채널이 없습니다.</string>
<!-- Audition -->
<string name="screen_audition_title">오디션</string>
<string name="screen_audition_on">ON</string>
<string name="screen_audition_off">OFF</string>
<string name="screen_audition_total_count">총 %1$d개</string>
<string name="screen_audition_how_to_use">보이스온 오디션 이용방법</string>
<string name="screen_audition_how_to_use_more">자세히&gt;</string>
<!-- Settings / Notices / Events --> <!-- Settings / Notices / Events -->
<string name="screen_settings_title">설정</string> <string name="screen_settings_title">설정</string>
<string name="screen_settings_notification">알림 설정</string> <string name="screen_settings_notification">알림 설정</string>