Character 탭 문자열 리소스화

This commit is contained in:
2025-12-01 16:45:22 +09:00
parent ebe5c342c9
commit 4e0e6708e6
8 changed files with 49 additions and 23 deletions

View File

@@ -379,12 +379,11 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
SodaDialog( SodaDialog(
activity = requireActivity(), activity = requireActivity(),
layoutInflater = layoutInflater, layoutInflater = layoutInflater,
title = "본인인증", title = getString(R.string.auth_title),
desc = "보이스온의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n" + desc = getString(R.string.auth_desc),
"캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요.", confirmButtonTitle = getString(R.string.auth_go),
confirmButtonTitle = "본인인증 하러가기",
confirmButtonClick = { startAuthFlow() }, confirmButtonClick = { startAuthFlow() },
cancelButtonTitle = "취소", cancelButtonTitle = getString(R.string.cancel),
cancelButtonClick = {}, cancelButtonClick = {},
descGravity = Gravity.CENTER descGravity = Gravity.CENTER
).show(screenWidth) ).show(screenWidth)
@@ -430,7 +429,10 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
} }
viewModel.toastLiveData.observe(viewLifecycleOwner) { viewModel.toastLiveData.observe(viewLifecycleOwner) {
it?.let { Toast.makeText(requireActivity(), it, Toast.LENGTH_LONG).show() } val text = it?.message ?: it?.resId?.let { resId -> getString(resId) }
if (!text.isNullOrBlank()) {
Toast.makeText(requireActivity(), text, Toast.LENGTH_LONG).show()
}
} }
} }

View File

@@ -5,9 +5,11 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacter import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacter
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.ToastMessage
class CharacterTabViewModel( class CharacterTabViewModel(
private val repository: CharacterTabRepository private val repository: CharacterTabRepository
@@ -16,8 +18,8 @@ class CharacterTabViewModel(
val isLoading: LiveData<Boolean> val isLoading: LiveData<Boolean>
get() = _isLoading get() = _isLoading
private val _toastLiveData = MutableLiveData<String?>() private val _toastLiveData = MutableLiveData<ToastMessage?>()
val toastLiveData: LiveData<String?> val toastLiveData: LiveData<ToastMessage?>
get() = _toastLiveData get() = _toastLiveData
private var _bannerListLiveData = MutableLiveData<List<CharacterBannerResponse>>() private var _bannerListLiveData = MutableLiveData<List<CharacterBannerResponse>>()
@@ -61,15 +63,18 @@ class CharacterTabViewModel(
_newCharacters.value = data.newCharacters _newCharacters.value = data.newCharacters
_recommendCharacters.value = data.recommendCharacters _recommendCharacters.value = data.recommendCharacters
} else { } else {
_toastLiveData.value = _toastLiveData.value = it.message?.let { message ->
it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.common_error_unknown)
} }
_isLoading.value = false _isLoading.value = false
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
ToastMessage(resId = R.string.common_error_unknown)
)
} }
) )
) )
@@ -86,15 +91,18 @@ class CharacterTabViewModel(
if (response.success && response.data != null) { if (response.success && response.data != null) {
_recommendCharacters.value = response.data _recommendCharacters.value = response.data
} else { } else {
_toastLiveData.value = response.message _toastLiveData.value = response.message?.let { message ->
?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." ToastMessage(message = message)
} ?: ToastMessage(resId = R.string.common_error_unknown)
} }
_isLoading.value = false _isLoading.value = false
}, },
{ throwable -> { throwable ->
_isLoading.value = false _isLoading.value = false
throwable.message?.let { msg -> Logger.e(msg) } throwable.message?.let { msg -> Logger.e(msg) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
ToastMessage(resId = R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -55,7 +55,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="최근 대화한 캐릭터" android:text="@string/screen_character_tab_recent_title"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="20sp" /> android:textSize="20sp" />
@@ -103,7 +103,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="인기 캐릭터" android:text="@string/screen_character_tab_popular_title"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" /> android:textSize="24sp" />
@@ -112,7 +112,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_regular" android:fontFamily="@font/pretendard_regular"
android:text="전체보기" android:text="@string/view_all"
android:textColor="#90A4AE" android:textColor="#90A4AE"
android:textSize="14sp" android:textSize="14sp"
android:visibility="gone" /> android:visibility="gone" />
@@ -149,7 +149,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="신규 캐릭터" android:text="@string/screen_character_tab_new_title"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" /> android:textSize="24sp" />
@@ -158,7 +158,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_regular" android:fontFamily="@font/pretendard_regular"
android:text="전체보기" android:text="@string/view_all"
android:textColor="#90A4AE" android:textColor="#90A4AE"
android:textSize="14sp" /> android:textSize="14sp" />
@@ -189,14 +189,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="24dp"> android:paddingHorizontal="24dp"
tools:ignore="UseCompoundDrawables">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="추천 캐릭터" android:text="@string/screen_character_tab_recommend_title"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" /> android:textSize="24sp" />

View File

@@ -41,7 +41,7 @@
android:gravity="center" android:gravity="center"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLines="1" android:maxLines="1"
android:text="N" android:text="@string/screen_character_tab_new_badge"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18sp" android:textSize="18sp"
android:visibility="gone" /> android:visibility="gone" />

View File

@@ -31,7 +31,7 @@
android:gravity="center" android:gravity="center"
android:includeFontPadding="false" android:includeFontPadding="false"
android:maxLines="1" android:maxLines="1"
android:text="N" android:text="@string/screen_character_tab_new_badge"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="18sp" android:textSize="18sp"
android:visibility="gone" android:visibility="gone"

View File

@@ -164,6 +164,11 @@
<string name="screen_home_series_complete">Complete</string> <string name="screen_home_series_complete">Complete</string>
<string name="screen_home_recommend_channel_content_label">Contents</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_unknown">An unknown error occurred. Please try again.</string>
<string name="screen_character_tab_recent_title">Recent characters</string>
<string name="screen_character_tab_popular_title">Popular characters</string>
<string name="screen_character_tab_new_title">New characters</string>
<string name="screen_character_tab_recommend_title">Recommended characters</string>
<string name="screen_character_tab_new_badge">N</string>
<string name="screen_chat_tab_character">Character</string> <string name="screen_chat_tab_character">Character</string>
<string name="screen_chat_tab_original">Works</string> <string name="screen_chat_tab_original">Works</string>
<string name="screen_chat_tab_talk">Talk</string> <string name="screen_chat_tab_talk">Talk</string>

View File

@@ -164,6 +164,11 @@
<string name="screen_home_series_complete">完結</string> <string name="screen_home_series_complete">完結</string>
<string name="screen_home_recommend_channel_content_label">コンテンツ</string> <string name="screen_home_recommend_channel_content_label">コンテンツ</string>
<string name="common_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string> <string name="common_error_unknown">不明なエラーが発生しました。もう一度お試しください。</string>
<string name="screen_character_tab_recent_title">最近話したキャラクター</string>
<string name="screen_character_tab_popular_title">人気キャラクター</string>
<string name="screen_character_tab_new_title">新着キャラクター</string>
<string name="screen_character_tab_recommend_title">おすすめキャラクター</string>
<string name="screen_character_tab_new_badge">N</string>
<string name="screen_chat_tab_character">キャラクター</string> <string name="screen_chat_tab_character">キャラクター</string>
<string name="screen_chat_tab_original">作品別</string> <string name="screen_chat_tab_original">作品別</string>
<string name="screen_chat_tab_talk">トーク</string> <string name="screen_chat_tab_talk">トーク</string>

View File

@@ -163,6 +163,11 @@
<string name="screen_home_series_complete">완결</string> <string name="screen_home_series_complete">완결</string>
<string name="screen_home_recommend_channel_content_label">콘텐츠</string> <string name="screen_home_recommend_channel_content_label">콘텐츠</string>
<string name="common_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string> <string name="common_error_unknown">알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.</string>
<string name="screen_character_tab_recent_title">최근 대화한 캐릭터</string>
<string name="screen_character_tab_popular_title">인기 캐릭터</string>
<string name="screen_character_tab_new_title">신규 캐릭터</string>
<string name="screen_character_tab_recommend_title">추천 캐릭터</string>
<string name="screen_character_tab_new_badge">N</string>
<string name="screen_chat_tab_character">캐릭터</string> <string name="screen_chat_tab_character">캐릭터</string>
<string name="screen_chat_tab_original">작품별</string> <string name="screen_chat_tab_original">작품별</string>
<string name="screen_chat_tab_talk"></string> <string name="screen_chat_tab_talk"></string>