From 4e0e6708e6af2464dd42c25fbac91a11edfcd93e Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 1 Dec 2025 16:45:22 +0900 Subject: [PATCH] =?UTF-8?q?Character=20=ED=83=AD=20=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4=20=EB=A6=AC=EC=86=8C=EC=8A=A4=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/character/CharacterTabFragment.kt | 14 ++++++----- .../chat/character/CharacterTabViewModel.kt | 24 ++++++++++++------- .../res/layout/fragment_character_tab.xml | 15 ++++++------ app/src/main/res/layout/item_character.xml | 2 +- .../res/layout/item_new_character_all.xml | 2 +- app/src/main/res/values-en/strings.xml | 5 ++++ app/src/main/res/values-ja/strings.xml | 5 ++++ app/src/main/res/values/strings.xml | 5 ++++ 8 files changed, 49 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt index 2ee4e4c5..648760a3 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabFragment.kt @@ -379,12 +379,11 @@ class CharacterTabFragment : BaseFragment( SodaDialog( activity = requireActivity(), layoutInflater = layoutInflater, - title = "본인인증", - desc = "보이스온의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n" + - "캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요.", - confirmButtonTitle = "본인인증 하러가기", + title = getString(R.string.auth_title), + desc = getString(R.string.auth_desc), + confirmButtonTitle = getString(R.string.auth_go), confirmButtonClick = { startAuthFlow() }, - cancelButtonTitle = "취소", + cancelButtonTitle = getString(R.string.cancel), cancelButtonClick = {}, descGravity = Gravity.CENTER ).show(screenWidth) @@ -430,7 +429,10 @@ class CharacterTabFragment : BaseFragment( } 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() + } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt index e610a3dc..4c69a19f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/character/CharacterTabViewModel.kt @@ -5,9 +5,11 @@ 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.chat.character.recent.RecentCharacter import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.ToastMessage class CharacterTabViewModel( private val repository: CharacterTabRepository @@ -16,8 +18,8 @@ class CharacterTabViewModel( val isLoading: LiveData get() = _isLoading - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _bannerListLiveData = MutableLiveData>() @@ -61,15 +63,18 @@ class CharacterTabViewModel( _newCharacters.value = data.newCharacters _recommendCharacters.value = data.recommendCharacters } else { - _toastLiveData.value = - it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + _toastLiveData.value = it.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) } _isLoading.value = false }, { _isLoading.value = false 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) { _recommendCharacters.value = response.data } else { - _toastLiveData.value = response.message - ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + _toastLiveData.value = response.message?.let { message -> + ToastMessage(message = message) + } ?: ToastMessage(resId = R.string.common_error_unknown) } _isLoading.value = false }, { throwable -> _isLoading.value = false throwable.message?.let { msg -> Logger.e(msg) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) } ) ) diff --git a/app/src/main/res/layout/fragment_character_tab.xml b/app/src/main/res/layout/fragment_character_tab.xml index f3b89c7d..a32c3f56 100644 --- a/app/src/main/res/layout/fragment_character_tab.xml +++ b/app/src/main/res/layout/fragment_character_tab.xml @@ -55,7 +55,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="최근 대화한 캐릭터" + android:text="@string/screen_character_tab_recent_title" android:textColor="@color/white" android:textSize="20sp" /> @@ -103,7 +103,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="인기 캐릭터" + android:text="@string/screen_character_tab_popular_title" android:textColor="@color/white" android:textSize="24sp" /> @@ -112,7 +112,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" android:visibility="gone" /> @@ -149,7 +149,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:fontFamily="@font/pretendard_bold" - android:text="신규 캐릭터" + android:text="@string/screen_character_tab_new_title" android:textColor="@color/white" android:textSize="24sp" /> @@ -158,7 +158,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_regular" - android:text="전체보기" + android:text="@string/view_all" android:textColor="#90A4AE" android:textSize="14sp" /> @@ -189,14 +189,15 @@ android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" - android:paddingHorizontal="24dp"> + android:paddingHorizontal="24dp" + tools:ignore="UseCompoundDrawables"> diff --git a/app/src/main/res/layout/item_character.xml b/app/src/main/res/layout/item_character.xml index eb2e5447..1e22f6fe 100644 --- a/app/src/main/res/layout/item_character.xml +++ b/app/src/main/res/layout/item_character.xml @@ -41,7 +41,7 @@ android:gravity="center" android:includeFontPadding="false" android:maxLines="1" - android:text="N" + android:text="@string/screen_character_tab_new_badge" android:textColor="@color/white" android:textSize="18sp" android:visibility="gone" /> diff --git a/app/src/main/res/layout/item_new_character_all.xml b/app/src/main/res/layout/item_new_character_all.xml index 916b0928..8c0ae6e6 100644 --- a/app/src/main/res/layout/item_new_character_all.xml +++ b/app/src/main/res/layout/item_new_character_all.xml @@ -31,7 +31,7 @@ android:gravity="center" android:includeFontPadding="false" android:maxLines="1" - android:text="N" + android:text="@string/screen_character_tab_new_badge" android:textColor="@color/white" android:textSize="18sp" android:visibility="gone" diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index a3bfe3d6..43cc88a4 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -164,6 +164,11 @@ Complete Contents An unknown error occurred. Please try again. + Recent characters + Popular characters + New characters + Recommended characters + N Character Works Talk diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 2741c56e..cc9657f6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -164,6 +164,11 @@ 完結 コンテンツ 不明なエラーが発生しました。もう一度お試しください。 + 最近話したキャラクター + 人気キャラクター + 新着キャラクター + おすすめキャラクター + N キャラクター 作品別 トーク diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e460774e..2f364020 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -163,6 +163,11 @@ 완결 콘텐츠 알 수 없는 오류가 발생했습니다. 다시 시도해 주세요. + 최근 대화한 캐릭터 + 인기 캐릭터 + 신규 캐릭터 + 추천 캐릭터 + N 캐릭터 작품별