채팅 탭의 캐릭터 리스트 - 폰 언어 설정에 따라 번역 데이터를 조회하도록 수정

This commit is contained in:
2025-12-12 01:56:37 +09:00
parent 2e7b1ac09e
commit 0854b76dfa
7 changed files with 36 additions and 12 deletions

View File

@@ -16,6 +16,7 @@ import retrofit2.http.Query
interface CharacterApi {
@GET("/api/chat/character/main")
fun getCharacterMain(
@Query("languageCode") languageCode: String,
@Header("Authorization") authHeader: String
): Single<ApiResponse<CharacterHomeResponse>>
@@ -49,12 +50,14 @@ interface CharacterApi {
fun getRecentCharacters(
@Header("Authorization") authHeader: String,
@Query("page") page: Int,
@Query("size") size: Int
@Query("size") size: Int,
@Query("languageCode") languageCode: String
): Single<ApiResponse<kr.co.vividnext.sodalive.chat.character.newcharacters.RecentCharactersResponse>>
// 추천 캐릭터 새로고침
@GET("/api/chat/character/recommend")
fun refreshRecommendCharacters(
@Query("languageCode") languageCode: String,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<Character>>>

View File

@@ -27,6 +27,7 @@ import kr.co.vividnext.sodalive.chat.character.newcharacters.NewCharactersAllAda
import kr.co.vividnext.sodalive.chat.character.recent.RecentCharacterAdapter
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.main.MainActivity
@@ -56,7 +57,7 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
setupView()
observeViewModel()
viewModel.fetchData()
viewModel.fetchData(languageCode = getCurrentLanguageCode(requireContext()))
}
private fun setupView() {
@@ -354,7 +355,9 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
// 새로고침 버튼 클릭 처리
binding.ivRecommendRefresh.setOnClickListener {
viewModel.refreshRecommendCharacters()
viewModel.refreshRecommendCharacters(
languageCode = getCurrentLanguageCode(requireContext())
)
}
// 추천 캐릭터 관찰

View File

@@ -2,10 +2,15 @@ package kr.co.vividnext.sodalive.chat.character
class CharacterTabRepository(private val api: CharacterApi) {
fun getCharacterMain(
languageCode: String,
token: String
) = api.getCharacterMain(authHeader = token)
) = api.getCharacterMain(
languageCode = languageCode,
authHeader = token
)
fun refreshRecommendCharacters(
languageCode: String,
token: String
) = api.refreshRecommendCharacters(authHeader = token)
) = api.refreshRecommendCharacters(languageCode = languageCode, authHeader = token)
}

View File

@@ -46,11 +46,14 @@ class CharacterTabViewModel(
val recommendCharacters: LiveData<List<Character>>
get() = _recommendCharacters
fun fetchData() {
fun fetchData(languageCode: String) {
_isLoading.value = true
compositeDisposable.add(
repository.getCharacterMain(token = "Bearer ${SharedPreferenceManager.token}")
repository.getCharacterMain(
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
@@ -80,10 +83,13 @@ class CharacterTabViewModel(
)
}
fun refreshRecommendCharacters() {
fun refreshRecommendCharacters(languageCode: String) {
_isLoading.value = true
compositeDisposable.add(
repository.refreshRecommendCharacters(token = "Bearer ${SharedPreferenceManager.token}")
repository.refreshRecommendCharacters(
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(

View File

@@ -12,6 +12,7 @@ import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity
import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity.Companion.EXTRA_CHARACTER_ID
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.ActivityNewCharactersAllBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject
@@ -28,6 +29,7 @@ class NewCharactersAllActivity : BaseActivity<ActivityNewCharactersAllBinding>(
super.onCreate(savedInstanceState)
setupView()
bindData()
viewModel.languageCode = getCurrentLanguageCode(this)
viewModel.loadMore()
}

View File

@@ -27,6 +27,8 @@ class NewCharactersAllViewModel(
private val _items = MutableLiveData<List<Character>>(emptyList())
val items: LiveData<List<Character>> get() = _items
var languageCode: String = "ko"
private var page = 0
private val size = 20
private var isLast = false
@@ -39,7 +41,8 @@ class NewCharactersAllViewModel(
repository.getRecentCharacters(
token = "Bearer ${SharedPreferenceManager.token}",
page = page,
size = size
size = size,
languageCode = languageCode
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@@ -10,12 +10,14 @@ class NewCharactersRepository(
fun getRecentCharacters(
token: String,
page: Int,
size: Int
size: Int,
languageCode: String
): Single<ApiResponse<RecentCharactersResponse>> {
return api.getRecentCharacters(
authHeader = token,
page = page,
size = size
size = size,
languageCode = languageCode
)
}
}