시리즈 메인 문자열 리소스화

This commit is contained in:
2025-12-03 18:34:14 +09:00
parent 35f95aa0f2
commit b521b79fe4
8 changed files with 59 additions and 31 deletions

View File

@@ -14,16 +14,22 @@ class SeriesMainActivity : BaseActivity<ActivitySeriesMainBinding>(
private var currentTab = 0
override fun setupView() {
binding.toolbar.tvBack.text = "시리즈 전체보기"
binding.toolbar.tvBack.text = getString(R.string.screen_series_main_title)
binding.toolbar.tvBack.setOnClickListener { finish() }
setupTabs()
}
private fun setupTabs() {
binding.tabLayout.addTab(binding.tabLayout.newTab().setText(""))
binding.tabLayout.addTab(binding.tabLayout.newTab().setText("요일별"))
binding.tabLayout.addTab(binding.tabLayout.newTab().setText("장르별"))
binding.tabLayout.addTab(
binding.tabLayout.newTab().setText(R.string.screen_series_main_tab_home)
)
binding.tabLayout.addTab(
binding.tabLayout.newTab().setText(R.string.screen_series_main_tab_day_of_week)
)
binding.tabLayout.addTab(
binding.tabLayout.newTab().setText(R.string.screen_series_main_tab_genre)
)
// 탭 선택 리스너 설정
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {

View File

@@ -4,10 +4,12 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.audio_content.series.main.SeriesMainRepository
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
class SeriesMainByGenreViewModel(
private val repository: SeriesMainRepository
@@ -36,6 +38,9 @@ class SeriesMainByGenreViewModel(
val selectedGenreId: Long?
get() = _selectedGenreId
private val unknownErrorMessage: String
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
fun loadGenres() {
_isLoading.value = true
compositeDisposable.add(
@@ -59,12 +64,12 @@ class SeriesMainByGenreViewModel(
_genreListLiveData.value = emptyList()
}
} else {
_toastLiveData.value = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = it.message ?: unknownErrorMessage
}
},
{
_isLoading.value = false
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = unknownErrorMessage
}
)
)
@@ -108,12 +113,12 @@ class SeriesMainByGenreViewModel(
isLast = true
}
} else {
_toastLiveData.value = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = it.message ?: unknownErrorMessage
}
},
{
_isLoading.value = false
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = unknownErrorMessage
}
)
)

View File

@@ -5,10 +5,12 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.audio_content.series.main.SeriesMainRepository
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek
class SeriesMainDayOfWeekViewModel(
@@ -30,6 +32,9 @@ class SeriesMainDayOfWeekViewModel(
private var isLast = false
private val pageSize = 20
private val unknownErrorMessage: String
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
var dayOfWeek = SeriesPublishedDaysOfWeek.RANDOM
set(newValue) {
if (field != newValue) {
@@ -67,17 +72,13 @@ class SeriesMainDayOfWeekViewModel(
isLast = true
}
} else {
if (it.message != null) {
_toastLiveData.value = it.message
} else {
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
}
_toastLiveData.value = it.message ?: unknownErrorMessage
}
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = unknownErrorMessage
}
)
)

View File

@@ -5,10 +5,12 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.audio_content.series.main.SeriesMainRepository
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
class SeriesMainHomeViewModel(
private val repository: SeriesMainRepository
@@ -35,6 +37,9 @@ class SeriesMainHomeViewModel(
val recommendSeriesLiveData: LiveData<List<GetSeriesListResponse.SeriesListItem>>
get() = _recommendSeriesLiveData
private val unknownErrorMessage: String
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
fun fetchData() {
_isLoading.value = true
@@ -52,19 +57,13 @@ class SeriesMainHomeViewModel(
_completedSeriesLiveData.value = data.completedSeriesList
_recommendSeriesLiveData.value = data.recommendSeriesList
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
}
_toastLiveData.postValue(it.message ?: unknownErrorMessage)
}
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
_toastLiveData.postValue(unknownErrorMessage)
}
)
)
@@ -83,17 +82,13 @@ class SeriesMainHomeViewModel(
if (it.success && it.data != null) {
_recommendSeriesLiveData.value = it.data
} else {
if (it.message != null) {
_toastLiveData.value = it.message
} else {
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
}
_toastLiveData.value = it.message ?: unknownErrorMessage
}
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
_toastLiveData.value = unknownErrorMessage
}
)
)

View File

@@ -55,7 +55,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/pretendard_bold"
android:text="완결 시리즈"
android:text="@string/screen_series_main_completed_title"
android:textColor="@color/white"
android:textSize="24sp" />
@@ -64,7 +64,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_regular"
android:text="전체보기"
android:text="@string/screen_series_main_completed_all"
android:textColor="#90A4AE"
android:textSize="14sp" />
@@ -102,7 +102,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/pretendard_bold"
android:text="추천 시리즈"
android:text="@string/screen_series_main_recommend_title"
android:textColor="@color/white"
android:textSize="24sp" />

View File

@@ -167,6 +167,13 @@
<string name="screen_home_series_popular">Popular</string>
<string name="screen_home_series_new">New</string>
<string name="screen_home_series_complete">Complete</string>
<string name="screen_series_main_title">All series</string>
<string name="screen_series_main_tab_home">Home</string>
<string name="screen_series_main_tab_day_of_week">By day</string>
<string name="screen_series_main_tab_genre">By genre</string>
<string name="screen_series_main_completed_title">Completed series</string>
<string name="screen_series_main_completed_all">View all</string>
<string name="screen_series_main_recommend_title">Recommended series</string>
<string name="screen_home_recommend_channel_content_label">Contents</string>
<string name="common_error_unknown">An unknown error occurred. Please try again.</string>
<string name="common_error_request">An error occurred while processing the request.</string>

View File

@@ -167,6 +167,13 @@
<string name="screen_home_series_popular">人気</string>
<string name="screen_home_series_new">新作</string>
<string name="screen_home_series_complete">完結</string>
<string name="screen_series_main_title">シリーズ一覧</string>
<string name="screen_series_main_tab_home">ホーム</string>
<string name="screen_series_main_tab_day_of_week">曜日別</string>
<string name="screen_series_main_tab_genre">ジャンル別</string>
<string name="screen_series_main_completed_title">完結シリーズ</string>
<string name="screen_series_main_completed_all">すべて見る</string>
<string name="screen_series_main_recommend_title">おすすめシリーズ</string>
<string name="screen_home_recommend_channel_content_label">コンテンツ</string>
<string name="common_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
<string name="common_error_request">リクエスト処理中にエラーが発生しました。</string>

View File

@@ -166,6 +166,13 @@
<string name="screen_home_series_popular">인기</string>
<string name="screen_home_series_new">신작</string>
<string name="screen_home_series_complete">완결</string>
<string name="screen_series_main_title">시리즈 전체보기</string>
<string name="screen_series_main_tab_home"></string>
<string name="screen_series_main_tab_day_of_week">요일별</string>
<string name="screen_series_main_tab_genre">장르별</string>
<string name="screen_series_main_completed_title">완결 시리즈</string>
<string name="screen_series_main_completed_all">전체보기</string>
<string name="screen_series_main_recommend_title">추천 시리즈</string>
<string name="screen_home_recommend_channel_content_label">콘텐츠</string>
<string name="common_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<string name="common_error_request">요청 중 오류가 발생했습니다.</string>