공용 토스트 메시지로 unknown 오류를 통합

Toast 메시지를 공용 데이터 클래스로 정의합니다.

화면별 unknown 에러 문자열을 common_error_unknown으로 통일합니다.
This commit is contained in:
2025-12-01 13:40:31 +09:00
parent 492077ddb2
commit 4d1e859bbf
7 changed files with 54 additions and 67 deletions

View File

@@ -0,0 +1,8 @@
package kr.co.vividnext.sodalive.common
import androidx.annotation.StringRes
data class ToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)

View File

@@ -1,6 +1,5 @@
package kr.co.vividnext.sodalive.home
import androidx.annotation.StringRes
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
@@ -12,6 +11,7 @@ import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.chat.character.Character
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.ToastMessage
import kr.co.vividnext.sodalive.explorer.GetExplorerSectionCreatorResponse
import kr.co.vividnext.sodalive.live.GetRoomListResponse
import kr.co.vividnext.sodalive.user.UserRepository
@@ -26,8 +26,8 @@ class HomeViewModel(
val isLoading: LiveData<Boolean>
get() = _isLoading
private val _toastLiveData = MutableLiveData<HomeToastMessage?>()
val toastLiveData: LiveData<HomeToastMessage?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
private var _liveListLiveData = MutableLiveData<List<GetRoomListResponse>>()
@@ -117,9 +117,9 @@ class HomeViewModel(
} else {
_toastLiveData.postValue(
if (it.message != null) {
HomeToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
)
}
@@ -128,7 +128,7 @@ class HomeViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -147,10 +147,10 @@ class HomeViewModel(
_contentRankingLiveData.value = data
} else {
if (it.message != null) {
_toastLiveData.postValue(HomeToastMessage(message = it.message))
_toastLiveData.postValue(ToastMessage(message = it.message))
} else {
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
}
@@ -158,7 +158,7 @@ class HomeViewModel(
{
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -182,7 +182,7 @@ class HomeViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -210,7 +210,7 @@ class HomeViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -238,7 +238,7 @@ class HomeViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -261,10 +261,10 @@ class HomeViewModel(
_isLoading.value = false
if (!it.success || it.data == null) {
if (it.message != null) {
_toastLiveData.postValue(HomeToastMessage(message = it.message))
_toastLiveData.postValue(ToastMessage(message = it.message))
} else {
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
}
@@ -273,15 +273,10 @@ class HomeViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
HomeToastMessage(resId = R.string.screen_home_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
)
}
}
data class HomeToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)

View File

@@ -1,6 +1,5 @@
package kr.co.vividnext.sodalive.mypage
import androidx.annotation.StringRes
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
@@ -9,6 +8,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.ApiResponse
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.ToastMessage
import kr.co.vividnext.sodalive.mypage.auth.AuthRepository
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
import kr.co.vividnext.sodalive.settings.ContentType
@@ -22,8 +22,8 @@ class MyPageViewModel(
private val authRepository: AuthRepository,
private val noticeRepository: NoticeRepository
) : BaseViewModel() {
private val _toastLiveData = MutableLiveData<MyPageToastMessage?>()
val toastLiveData: LiveData<MyPageToastMessage?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
private var _isLoading = MutableLiveData(false)
@@ -54,9 +54,9 @@ class MyPageViewModel(
} else {
_toastLiveData.postValue(
if (it.message != null) {
MyPageToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
)
}
@@ -66,7 +66,7 @@ class MyPageViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -95,9 +95,9 @@ class MyPageViewModel(
} else {
_toastLiveData.postValue(
if (it.message != null) {
MyPageToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
)
@@ -108,7 +108,7 @@ class MyPageViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue(
MyPageToastMessage(resId = R.string.screen_my_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
)
}
)
@@ -136,8 +136,3 @@ class MyPageViewModel(
)
}
}
data class MyPageToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)

View File

@@ -1,6 +1,5 @@
package kr.co.vividnext.sodalive.search
import androidx.annotation.StringRes
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
@@ -9,6 +8,7 @@ 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
import kr.co.vividnext.sodalive.common.ToastMessage
class SearchViewModel(
private val repository: SearchRepository
@@ -29,8 +29,8 @@ class SearchViewModel(
val currentTabLiveData: LiveData<SearchPageTab>
get() = _currentTabLiveData
private val _toastLiveData = MutableLiveData<SearchToastMessage?>()
val toastLiveData: LiveData<SearchToastMessage?>
private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData
private var _isLoading = MutableLiveData(false)
@@ -94,9 +94,9 @@ class SearchViewModel(
_searchUnifiedLiveData.value = it.data!!
} else {
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
SearchToastMessage(resId = R.string.screen_search_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
}
},
@@ -104,8 +104,8 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
.value = ToastMessage(
resId = R.string.common_error_unknown
)
}
)
@@ -139,9 +139,9 @@ class SearchViewModel(
}
} else {
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
SearchToastMessage(resId = R.string.screen_search_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
}
},
@@ -149,8 +149,8 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
.value = ToastMessage(
resId = R.string.common_error_unknown
)
}
)
@@ -186,9 +186,9 @@ class SearchViewModel(
}
} else {
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
SearchToastMessage(resId = R.string.screen_search_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
}
},
@@ -196,8 +196,8 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
.value = ToastMessage(
resId = R.string.common_error_unknown
)
}
)
@@ -233,9 +233,9 @@ class SearchViewModel(
}
} else {
_toastLiveData.value = if (it.message != null) {
SearchToastMessage(message = it.message)
ToastMessage(message = it.message)
} else {
SearchToastMessage(resId = R.string.screen_search_error_unknown)
ToastMessage(resId = R.string.common_error_unknown)
}
}
},
@@ -243,8 +243,8 @@ class SearchViewModel(
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData
.value = SearchToastMessage(
resId = R.string.screen_search_error_unknown
.value = ToastMessage(
resId = R.string.common_error_unknown
)
}
)
@@ -254,8 +254,3 @@ class SearchViewModel(
}
}
}
data class SearchToastMessage(
@StringRes val resId: Int? = null,
val message: String? = null
)

View File

@@ -119,7 +119,7 @@
<string name="screen_home_series_new">New</string>
<string name="screen_home_series_complete">Complete</string>
<string name="screen_home_recommend_channel_content_label">Contents</string>
<string name="screen_home_error_unknown">An unknown error occurred. Please try again.</string>
<string name="common_error_unknown">An unknown error occurred. Please try again.</string>
<string name="screen_chat_tab_character">Character</string>
<string name="screen_chat_tab_original">Works</string>
<string name="screen_chat_tab_talk">Talk</string>
@@ -153,7 +153,6 @@
<string name="screen_my_identity_verification">Verify identity</string>
<string name="screen_my_coupon_register">Register coupon</string>
<string name="screen_my_auth_required">Available after identity verification.</string>
<string name="screen_my_error_unknown">An unknown error occurred. Please try again.</string>
<string name="screen_search_hint">Search</string>
<string name="screen_search_tab_unified">All</string>
<string name="screen_search_tab_creator">Channels</string>
@@ -164,5 +163,4 @@
<string name="screen_search_content_title">Contents</string>
<string name="screen_search_series_title">Series</string>
<string name="screen_search_no_result">No results found.</string>
<string name="screen_search_error_unknown">An unknown error occurred. Please try again.</string>
</resources>

View File

@@ -119,7 +119,7 @@
<string name="screen_home_series_new">新作</string>
<string name="screen_home_series_complete">完結</string>
<string name="screen_home_recommend_channel_content_label">コンテンツ</string>
<string name="screen_home_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
<string name="common_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
<string name="screen_chat_tab_character">キャラクター</string>
<string name="screen_chat_tab_original">作品別</string>
<string name="screen_chat_tab_talk">トーク</string>
@@ -153,7 +153,6 @@
<string name="screen_my_identity_verification">本人認証</string>
<string name="screen_my_coupon_register">クーポン登録</string>
<string name="screen_my_auth_required">本人認証後に利用できます。</string>
<string name="screen_my_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
<string name="screen_search_hint">検索</string>
<string name="screen_search_tab_unified">総合</string>
<string name="screen_search_tab_creator">チャンネル</string>
@@ -164,5 +163,4 @@
<string name="screen_search_content_title">コンテンツ</string>
<string name="screen_search_series_title">シリーズ</string>
<string name="screen_search_no_result">検索結果がありません。</string>
<string name="screen_search_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
</resources>

View File

@@ -118,7 +118,7 @@
<string name="screen_home_series_new">신작</string>
<string name="screen_home_series_complete">완결</string>
<string name="screen_home_recommend_channel_content_label">콘텐츠</string>
<string name="screen_home_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<string name="common_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<string name="screen_chat_tab_character">캐릭터</string>
<string name="screen_chat_tab_original">작품별</string>
<string name="screen_chat_tab_talk"></string>
@@ -152,7 +152,6 @@
<string name="screen_my_identity_verification">본인인증</string>
<string name="screen_my_coupon_register">쿠폰등록</string>
<string name="screen_my_auth_required">본인인증 후 사용가능합니다.</string>
<string name="screen_my_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<string name="screen_search_hint">검색</string>
<string name="screen_search_tab_unified">통합</string>
<string name="screen_search_tab_creator">채널</string>
@@ -163,5 +162,4 @@
<string name="screen_search_content_title">콘텐츠</string>
<string name="screen_search_series_title">시리즈</string>
<string name="screen_search_no_result">검색 결과가 없습니다.</string>
<string name="screen_search_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
</resources>