API 별로 언어 코드를 쿼리 파라미터로 전송하는 코드 제거

This commit is contained in:
2025-12-12 19:59:07 +09:00
parent e9df2bfa03
commit b67a3fd0b4
26 changed files with 20 additions and 90 deletions

View File

@@ -16,15 +16,13 @@ import retrofit2.http.Query
interface CharacterApi {
@GET("/api/chat/character/main")
fun getCharacterMain(
@Query("languageCode") languageCode: String,
@Header("Authorization") authHeader: String
): Single<ApiResponse<CharacterHomeResponse>>
@GET("/api/chat/character/{characterId}")
fun getCharacterDetail(
@Header("Authorization") authHeader: String,
@Path("characterId") characterId: Long,
@Query("languageCode") languageCode: String
@Path("characterId") characterId: Long
): Single<ApiResponse<CharacterDetailResponse>>
@GET("/api/chat/character/image/list")
@@ -50,14 +48,12 @@ interface CharacterApi {
fun getRecentCharacters(
@Header("Authorization") authHeader: String,
@Query("page") page: Int,
@Query("size") size: Int,
@Query("languageCode") languageCode: String
@Query("size") size: Int
): 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,7 +27,6 @@ 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
@@ -57,7 +56,7 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
setupView()
observeViewModel()
viewModel.fetchData(languageCode = getCurrentLanguageCode(requireContext()))
viewModel.fetchData()
}
private fun setupView() {
@@ -355,9 +354,7 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
// 새로고침 버튼 클릭 처리
binding.ivRecommendRefresh.setOnClickListener {
viewModel.refreshRecommendCharacters(
languageCode = getCurrentLanguageCode(requireContext())
)
viewModel.refreshRecommendCharacters()
}
// 추천 캐릭터 관찰

View File

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

View File

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

View File

@@ -23,7 +23,6 @@ import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity.Co
import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity
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.FragmentCharacterDetailBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject
@@ -79,7 +78,7 @@ class CharacterDetailFragment : BaseFragment<FragmentCharacterDetailBinding>(
setupView()
bindObservers()
viewModel.load(characterId, languageCode = getCurrentLanguageCode(requireContext()))
viewModel.load(characterId)
}
@SuppressLint("SetTextI18n")
@@ -318,8 +317,7 @@ class CharacterDetailFragment : BaseFragment<FragmentCharacterDetailBinding>(
binding.etCommentInput.setText("")
showToast(getString(R.string.character_detail_comment_register_success))
viewModel.load(
targetCharacterId,
languageCode = getCurrentLanguageCode(requireContext())
targetCharacterId
)
} else {
showToast(

View File

@@ -10,12 +10,10 @@ class CharacterDetailRepository(
) {
fun getCharacterDetail(
token: String,
characterId: Long,
languageCode: String
characterId: Long
) = characterApi.getCharacterDetail(
authHeader = token,
characterId = characterId,
languageCode = languageCode
characterId = characterId
)
fun createChatRoom(token: String, request: CreateChatRoomRequest) =

View File

@@ -33,15 +33,14 @@ class CharacterDetailViewModel(
private val _uiState = MutableLiveData(UiState())
val uiState: LiveData<UiState> get() = _uiState
fun load(characterId: Long, languageCode: String) {
fun load(characterId: Long) {
_uiState.value = _uiState.value?.copy(isLoading = true, error = null)
val token = "Bearer ${SharedPreferenceManager.token}"
compositeDisposable.add(
repository.getCharacterDetail(
token = token,
characterId = characterId,
languageCode = languageCode
characterId = characterId
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@@ -12,7 +12,6 @@ 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
@@ -29,7 +28,6 @@ class NewCharactersAllActivity : BaseActivity<ActivityNewCharactersAllBinding>(
super.onCreate(savedInstanceState)
setupView()
bindData()
viewModel.languageCode = getCurrentLanguageCode(this)
viewModel.loadMore()
}

View File

@@ -27,8 +27,6 @@ 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
@@ -41,8 +39,7 @@ class NewCharactersAllViewModel(
repository.getRecentCharacters(
token = "Bearer ${SharedPreferenceManager.token}",
page = page,
size = size,
languageCode = languageCode
size = size
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

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