diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalWorkViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalWorkViewModel.kt index 6cc33d6d..13bb4899 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalWorkViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalWorkViewModel.kt @@ -65,11 +65,4 @@ class OriginalWorkViewModel( }) ) } - - fun refresh() { - page = 0 - isLast = false - _items.value = emptyList() - loadMore() - } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailActivity.kt index 7030844b..f14ef560 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailActivity.kt @@ -33,8 +33,13 @@ class OriginalWorkDetailActivity : BaseActivity + Toast.makeText( + applicationContext, + uiText.asString(this), + Toast.LENGTH_LONG + ).show() + } } viewModel.isLoading.observe(this) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailViewModel.kt index a8b3f328..c97932df 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkDetailViewModel.kt @@ -4,11 +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.base.BaseViewModel -import kr.co.vividnext.sodalive.chat.character.Character import kr.co.vividnext.sodalive.chat.original.OriginalWorkDetailResponse import kr.co.vividnext.sodalive.chat.original.OriginalWorkRepository import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.UiText class OriginalWorkDetailViewModel( private val repository: OriginalWorkRepository @@ -17,8 +18,8 @@ class OriginalWorkDetailViewModel( private val _isLoading = MutableLiveData(false) val isLoading: LiveData get() = _isLoading - private val _toast = MutableLiveData(null) - val toast: LiveData get() = _toast + private val _toast = MutableLiveData(null) + val toast: LiveData get() = _toast private val _detail = MutableLiveData(null) val detail: LiveData get() = _detail @@ -41,12 +42,14 @@ class OriginalWorkDetailViewModel( detailResponse = data _detail.value = detailResponse } else { - _toast.value = response.message ?: "알 수 없는 오류가 발생했습니다." + _toast.value = response.message?.let { UiText.DynamicString(it) } + ?: UiText.StringResource(R.string.common_error_unknown) } _isLoading.value = false }, { e -> _isLoading.value = false - _toast.value = e.message ?: "알 수 없는 오류가 발생했습니다." + _toast.value = e.message?.let { UiText.DynamicString(it) } + ?: UiText.StringResource(R.string.common_error_unknown) }) ) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkInfoFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkInfoFragment.kt index a32c14c3..193e08e0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkInfoFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/detail/OriginalWorkInfoFragment.kt @@ -12,6 +12,7 @@ import androidx.core.view.isVisible import kr.co.vividnext.sodalive.base.BaseFragment import kr.co.vividnext.sodalive.chat.original.OriginalWorkDetailResponse import kr.co.vividnext.sodalive.databinding.FragmentOriginalWorkInfoBinding +import kr.co.vividnext.sodalive.R class OriginalWorkInfoFragment : BaseFragment( FragmentOriginalWorkInfoBinding::inflate @@ -106,7 +107,10 @@ class OriginalWorkInfoFragment : BaseFragment( binding.tvOriginalWork.setBackgroundResource(outValue.resourceId) } // 접근성 설명 - binding.tvOriginalWork.contentDescription = "원작 $originalWork 링크 열기" + binding.tvOriginalWork.contentDescription = getString( + R.string.original_detail_link_content_description, + originalWork + ) binding.tvOriginalWork.setOnClickListener { openUrl(originalLink) @@ -156,7 +160,7 @@ class OriginalWorkInfoFragment : BaseFragment( if (!host.isNullOrBlank()) host else url } catch (_: Exception) { // 파싱 실패 시 간단한 레이블 제공 - "링크 ${index + 1}" + getString(R.string.original_detail_link_fallback, index + 1) } } diff --git a/app/src/main/res/layout/fragment_original_work_info.xml b/app/src/main/res/layout/fragment_original_work_info.xml index 28a573b3..6d7590cc 100644 --- a/app/src/main/res/layout/fragment_original_work_info.xml +++ b/app/src/main/res/layout/fragment_original_work_info.xml @@ -19,7 +19,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="작품 소개" + android:text="@string/original_work_info_section_title" android:textColor="@color/white" android:textSize="16sp" /> @@ -36,8 +36,8 @@ app:ellipsizeTextColor="@color/white" app:expandType="layout" app:isExpanded="false" - app:readLessText="간략히" - app:readMoreText="전체보기" + app:readLessText="@string/read_less" + app:readMoreText="@string/read_more" app:textMode="line" tools:text="특별한 꽃을 길러낼 수 있는 능력을 가진 리엘라.\n그녀는 호손 공작의 상속자가 되고 말아버리는데...\n생각하지도 못했던 상속에 당황한 리엘라의 앞에 왕의 동생이자 보석술사인 하운 대공이 나타난다.\n바로 그녀의 특별한 ‘능력’ 때문에!\n\n꽃집 소녀 리엘라의 우당탕탕 공작 상속기!\n두 명의 상속인" /> @@ -55,7 +55,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="원작 보러 가기" + android:text="@string/original_work_info_link_title" android:textColor="#B0BEC5" android:textSize="16sp" /> @@ -85,7 +85,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fontFamily="@font/pretendard_bold" - android:text="상세 정보" + android:text="@string/original_work_info_detail_title" android:textColor="@color/white" android:textSize="16sp" /> @@ -105,13 +105,13 @@ An unknown error occurred. Please try again. An error occurred while processing the request. A network error occurred. Please try again later. + + Characters + Work info + Invalid request. + Open original work %1$s link + Link %1$d + About the work + View original + Details + Writer + Studio + Original work + N Character info Details diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9d240982..9dbb579c 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -166,6 +166,19 @@ 不明なエラーが発生しました。もう一度お試しください。 リクエスト処理中にエラーが発生しました。 ネットワークエラーが発生しました。しばらくしてから再試行してください。 + + キャラクター + 作品情報 + 無効なリクエストです。 + 原作%1$sのリンクを開く + リンク %1$d + 作品紹介 + 原作を見に行く + 詳細情報 + 作家 + 制作会社 + 原作 + N キャラクター情報 詳細 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b578a25..ebce1405 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -165,6 +165,19 @@ 알 수 없는 오류가 발생했습니다. 다시 시도해 주세요. 요청 중 오류가 발생했습니다. 네트워크 오류가 발생했습니다. 잠시 후 다시 시도해 주세요. + + 캐릭터 + 작품 정보 + 잘못된 요청입니다. + 원작 %1$s 링크 열기 + 링크 %1$d + 작품 소개 + 원작 보러 가기 + 상세 정보 + 작가 + 제작사 + 원작 + N 캐릭터 정보 상세