diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/SeriesMainActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/SeriesMainActivity.kt index c4728c4e..f3169fe0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/SeriesMainActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/SeriesMainActivity.kt @@ -14,16 +14,22 @@ class SeriesMainActivity : BaseActivity( 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 { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreViewModel.kt index a7d576c2..36835ea7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreViewModel.kt @@ -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 } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekViewModel.kt index 032a0528..3ed04721 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekViewModel.kt @@ -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 } ) ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeViewModel.kt index fd585ce4..549de990 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeViewModel.kt @@ -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> 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 } ) ) diff --git a/app/src/main/res/layout/fragment_series_main_home.xml b/app/src/main/res/layout/fragment_series_main_home.xml index 79aca2b0..4e8e475f 100644 --- a/app/src/main/res/layout/fragment_series_main_home.xml +++ b/app/src/main/res/layout/fragment_series_main_home.xml @@ -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" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index ef8945a3..795c93e0 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -167,6 +167,13 @@ Popular New Complete + All series + Home + By day + By genre + Completed series + View all + Recommended series Contents An unknown error occurred. Please try again. An error occurred while processing the request. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9df872be..e7e9336e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -167,6 +167,13 @@ 人気 新作 完結 + シリーズ一覧 + ホーム + 曜日別 + ジャンル別 + 完結シリーズ + すべて見る + おすすめシリーズ コンテンツ 不明なエラーが発生しました。もう一度お試しください。 リクエスト処理中にエラーが発生しました。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6b75646c..abb82950 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -166,6 +166,13 @@ 인기 신작 완결 + 시리즈 전체보기 + + 요일별 + 장르별 + 완결 시리즈 + 전체보기 + 추천 시리즈 콘텐츠 알 수 없는 오류가 발생했습니다. 다시 시도해 주세요. 요청 중 오류가 발생했습니다.