검색 화면 문자열 리소스화

This commit is contained in:
2025-12-01 13:15:44 +09:00
parent bca527eca0
commit 492077ddb2
6 changed files with 86 additions and 33 deletions

View File

@@ -18,6 +18,7 @@ import com.google.android.material.tabs.TabLayout
import com.jakewharton.rxbinding4.widget.textChanges
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.detail.AudioContentDetailActivity
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
import kr.co.vividnext.sodalive.base.BaseActivity
@@ -319,7 +320,12 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>(ActivitySearchBinding
private fun setupTabs() {
val tabs = binding.tabs
val tabTitles = listOf("통합", "채널", "콘텐츠", "시리즈")
val tabTitles = listOf(
getString(R.string.screen_search_tab_unified),
getString(R.string.screen_search_tab_creator),
getString(R.string.screen_search_tab_content),
getString(R.string.screen_search_tab_series)
)
for (title in tabTitles) {
tabs.addTab(tabs.newTab().setText(title))
}
@@ -375,7 +381,10 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>(ActivitySearchBinding
)
viewModel.toastLiveData.observe(this) {
it?.let { Toast.makeText(this@SearchActivity, it, Toast.LENGTH_LONG).show() }
val text = it?.message ?: it?.resId?.let { resId -> getString(resId) }
if (!text.isNullOrBlank()) {
Toast.makeText(this@SearchActivity, text, Toast.LENGTH_LONG).show()
}
}
viewModel.isLoading.observe(this) {

View File

@@ -1,10 +1,12 @@
package kr.co.vividnext.sodalive.search
import androidx.annotation.StringRes
import androidx.lifecycle.LiveData
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.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
@@ -16,7 +18,7 @@ class SearchViewModel(
companion object {
fun fromOrdinal(ordinal: Int): SearchPageTab? {
return SearchPageTab.values().getOrNull(ordinal)
return entries.getOrNull(ordinal)
}
}
}
@@ -27,8 +29,8 @@ class SearchViewModel(
val currentTabLiveData: LiveData<SearchPageTab>
get() = _currentTabLiveData
private val _toastLiveData = MutableLiveData<String?>()
val toastLiveData: LiveData<String?>
private val _toastLiveData = MutableLiveData<SearchToastMessage?>()
val toastLiveData: LiveData<SearchToastMessage?>
get() = _toastLiveData
private var _isLoading = MutableLiveData(false)
@@ -91,11 +93,10 @@ class SearchViewModel(
if (it.success && it.data != null) {
_searchUnifiedLiveData.value = it.data!!
} else {
if (it.message != null) {
_toastLiveData.value = it.message
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
} else {
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
SearchToastMessage(resId = R.string.screen_search_error_unknown)
}
}
},
@@ -103,7 +104,9 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
)
}
)
)
@@ -135,11 +138,10 @@ class SearchViewModel(
isSearchCreatorLast = true
}
} else {
if (it.message != null) {
_toastLiveData.value = it.message
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
} else {
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
SearchToastMessage(resId = R.string.screen_search_error_unknown)
}
}
},
@@ -147,7 +149,9 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
)
}
)
)
@@ -181,11 +185,10 @@ class SearchViewModel(
isSearchContentLast = true
}
} else {
if (it.message != null) {
_toastLiveData.value = it.message
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
} else {
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
SearchToastMessage(resId = R.string.screen_search_error_unknown)
}
}
},
@@ -193,7 +196,9 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
)
}
)
)
@@ -227,11 +232,10 @@ class SearchViewModel(
isSearchSeriesLast = true
}
} else {
if (it.message != null) {
_toastLiveData.value = it.message
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
} else {
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
SearchToastMessage(resId = R.string.screen_search_error_unknown)
}
}
},
@@ -239,7 +243,9 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
)
}
)
)
@@ -248,3 +254,8 @@ class SearchViewModel(
}
}
}
data class SearchToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)