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

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() {
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) {

View File

@@ -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)
}
}

View File

@@ -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<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
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)
)
}
)
)

View File

@@ -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" />
</RelativeLayout>

View File

@@ -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"

View File

@@ -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"

View File

@@ -185,6 +185,14 @@
<string name="following_creator_total_suffix">creators</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 -->
<string name="screen_settings_title">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_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 -->
<string name="screen_settings_title">設定</string>
<string name="screen_settings_notification">通知設定</string>

View File

@@ -184,6 +184,14 @@
<string name="following_creator_total_suffix"></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 -->
<string name="screen_settings_title">설정</string>
<string name="screen_settings_notification">알림 설정</string>