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

@@ -22,7 +22,6 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -64,7 +63,6 @@ class AudioContentActivity : BaseActivity<ActivityAudioContentBinding>(
} }
bindData() bindData()
viewModel.languageCode = Utils.getCurrentLanguageCode(applicationContext)
viewModel.getCategoryList(userId = userId) viewModel.getCategoryList(userId = userId)
viewModel.getAudioContentList(userId = userId) { finish() } viewModel.getAudioContentList(userId = userId) { finish() }
} }

View File

@@ -39,7 +39,6 @@ import retrofit2.http.Query
interface AudioContentApi { interface AudioContentApi {
@GET("/audio-content/all") @GET("/audio-content/all")
fun getAllAudioContents( fun getAllAudioContents(
@Query("languageCode") languageCode: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType, @Query("contentType") contentType: ContentType,
@Query("page") page: Int, @Query("page") page: Int,
@@ -55,7 +54,6 @@ interface AudioContentApi {
fun getAudioContentList( fun getAudioContentList(
@Query("creator-id") id: Long, @Query("creator-id") id: Long,
@Query("category-id") categoryId: Long, @Query("category-id") categoryId: Long,
@Query("languageCode") languageCode: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("page") page: Int, @Query("page") page: Int,
@Query("size") size: Int, @Query("size") size: Int,
@@ -107,7 +105,6 @@ interface AudioContentApi {
@GET("/audio-content/{id}") @GET("/audio-content/{id}")
fun getAudioContentDetail( fun getAudioContentDetail(
@Path("id") id: Long, @Path("id") id: Long,
@Query("languageCode") languageCode: String?,
@Query("timezone") timezone: String, @Query("timezone") timezone: String,
@Header("Authorization") authHeader: String @Header("Authorization") authHeader: String
): Single<ApiResponse<GetAudioContentDetailResponse>> ): Single<ApiResponse<GetAudioContentDetailResponse>>
@@ -187,7 +184,6 @@ interface AudioContentApi {
fun getNewContentAllOfTheme( fun getNewContentAllOfTheme(
@Query("isFree") isFree: Boolean, @Query("isFree") isFree: Boolean,
@Query("theme") theme: String, @Query("theme") theme: String,
@Query("languageCode") languageCode: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType, @Query("contentType") contentType: ContentType,
@Query("page") page: Int, @Query("page") page: Int,

View File

@@ -18,7 +18,6 @@ class AudioContentRepository(
fun getAudioContentList( fun getAudioContentList(
id: Long, id: Long,
categoryId: Long, categoryId: Long,
languageCode: String,
page: Int, page: Int,
size: Int, size: Int,
sort: AudioContentViewModel.Sort, sort: AudioContentViewModel.Sort,
@@ -26,7 +25,6 @@ class AudioContentRepository(
) = api.getAudioContentList( ) = api.getAudioContentList(
id = id, id = id,
categoryId = categoryId, categoryId = categoryId,
languageCode = languageCode,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
page = page - 1, page = page - 1,
size = size, size = size,
@@ -74,11 +72,9 @@ class AudioContentRepository(
fun getAudioContentDetail( fun getAudioContentDetail(
audioContentId: Long, audioContentId: Long,
languageCode: String? = null,
token: String token: String
) = api.getAudioContentDetail( ) = api.getAudioContentDetail(
id = audioContentId, id = audioContentId,
languageCode = languageCode,
timezone = TimeZone.getDefault().id, timezone = TimeZone.getDefault().id,
authHeader = token authHeader = token
) )
@@ -117,7 +113,6 @@ class AudioContentRepository(
) = api.likeContent(request, authHeader = token) ) = api.likeContent(request, authHeader = token)
fun getNewContentAllOfTheme( fun getNewContentAllOfTheme(
languageCode: String,
isFree: Boolean, isFree: Boolean,
theme: String, theme: String,
page: Int, page: Int,
@@ -126,7 +121,6 @@ class AudioContentRepository(
) = api.getNewContentAllOfTheme( ) = api.getNewContentAllOfTheme(
isFree = isFree, isFree = isFree,
theme = theme, theme = theme,
languageCode = languageCode,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.entries[SharedPreferenceManager.contentPreference], contentType = ContentType.entries[SharedPreferenceManager.contentPreference],
page = page - 1, page = page - 1,
@@ -202,14 +196,12 @@ class AudioContentRepository(
fun getAllAudioContents( fun getAllAudioContents(
page: Int, page: Int,
size: Int, size: Int,
languageCode: String,
isFree: Boolean? = null, isFree: Boolean? = null,
isPointAvailableOnly: Boolean? = null, isPointAvailableOnly: Boolean? = null,
sortType: AudioContentViewModel.Sort = AudioContentViewModel.Sort.NEWEST, sortType: AudioContentViewModel.Sort = AudioContentViewModel.Sort.NEWEST,
theme: String? = null, theme: String? = null,
token: String token: String
) = api.getAllAudioContents( ) = api.getAllAudioContents(
languageCode = languageCode,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.entries[SharedPreferenceManager.contentPreference], contentType = ContentType.entries[SharedPreferenceManager.contentPreference],
page = page - 1, page = page - 1,

View File

@@ -49,7 +49,6 @@ class AudioContentViewModel(private val repository: AudioContentRepository) : Ba
POPULARITY POPULARITY
} }
var languageCode: String = "ko"
var isLast = false var isLast = false
var page = 1 var page = 1
private val size = 10 private val size = 10
@@ -62,7 +61,6 @@ class AudioContentViewModel(private val repository: AudioContentRepository) : Ba
repository.getAudioContentList( repository.getAudioContentList(
id = userId, id = userId,
categoryId = selectedCategoryId, categoryId = selectedCategoryId,
languageCode = languageCode,
page = page, page = page,
size = size, size = size,
token = "Bearer ${SharedPreferenceManager.token}", token = "Bearer ${SharedPreferenceManager.token}",

View File

@@ -17,7 +17,6 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentAllBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentAllBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.home.HomeContentAdapter import kr.co.vividnext.sodalive.home.HomeContentAdapter
@@ -44,7 +43,6 @@ class AudioContentAllActivity : BaseActivity<ActivityAudioContentAllBinding>(
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
bindData() bindData()
viewModel.languageCode = getCurrentLanguageCode(this)
viewModel.reset() viewModel.reset()
viewModel.getThemeList( viewModel.getThemeList(
isFree = if (isFree) true else null, isFree = if (isFree) true else null,

View File

@@ -34,8 +34,6 @@ class AudioContentAllViewModel(
val sortLiveData: LiveData<AudioContentViewModel.Sort> val sortLiveData: LiveData<AudioContentViewModel.Sort>
get() = _sortLiveData get() = _sortLiveData
var languageCode: String = "ko"
private var page = 1 private var page = 1
private val size = 20 private val size = 20
private var isLast = false private var isLast = false
@@ -94,7 +92,6 @@ class AudioContentAllViewModel(
repository.getAllAudioContents( repository.getAllAudioContents(
page = page, page = page,
size = size, size = size,
languageCode = languageCode,
isFree = isFree, isFree = isFree,
isPointAvailableOnly = isPointAvailableOnly, isPointAvailableOnly = isPointAvailableOnly,
sortType = _sortLiveData.value!!, sortType = _sortLiveData.value!!,

View File

@@ -17,7 +17,6 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentNewAllBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentNewAllBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
@@ -43,7 +42,6 @@ class AudioContentNewAllActivity : BaseActivity<ActivityAudioContentNewAllBindin
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
bindData() bindData()
viewModel.languageCode = getCurrentLanguageCode(this)
viewModel.getThemeList() viewModel.getThemeList()
viewModel.getNewContentList(isFree = isFree) viewModel.getNewContentList(isFree = isFree)
} }

View File

@@ -35,8 +35,6 @@ class AudioContentNewAllViewModel(
val newContentTotalCountLiveData: LiveData<Int> val newContentTotalCountLiveData: LiveData<Int>
get() = _newContentTotalCountLiveData get() = _newContentTotalCountLiveData
var languageCode: String = "ko"
private var isLast = false private var isLast = false
private var page = 1 private var page = 1
private val size = 10 private val size = 10
@@ -49,7 +47,6 @@ class AudioContentNewAllViewModel(
compositeDisposable.add( compositeDisposable.add(
repository.getNewContentAllOfTheme( repository.getNewContentAllOfTheme(
languageCode = languageCode,
isFree = isFree, isFree = isFree,
theme = selectedTheme, theme = selectedTheme,
page = page, page = page,

View File

@@ -43,7 +43,6 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.Utils import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentDetailBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentDetailBinding
import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
@@ -130,7 +129,6 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
} }
bindData() bindData()
viewModel.languageCode = getCurrentLanguageCode(applicationContext)
viewModel.getAudioContentDetail(audioContentId = audioContentId) { finish() } viewModel.getAudioContentDetail(audioContentId = audioContentId) { finish() }
} }

View File

@@ -55,8 +55,6 @@ class AudioContentDetailViewModel(
val isContentPlayLoopLiveData: LiveData<Boolean> val isContentPlayLoopLiveData: LiveData<Boolean>
get() = _isContentPlayLoopLiveData get() = _isContentPlayLoopLiveData
var languageCode: String = "ko"
private fun getString(@StringRes resId: Int, vararg args: Any) = private fun getString(@StringRes resId: Int, vararg args: Any) =
SodaLiveApplicationHolder.get().getString(resId, *args) SodaLiveApplicationHolder.get().getString(resId, *args)
@@ -71,7 +69,6 @@ class AudioContentDetailViewModel(
compositeDisposable.add( compositeDisposable.add(
repository.getAudioContentDetail( repository.getAudioContentDetail(
audioContentId = audioContentId, audioContentId = audioContentId,
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}" token = "Bearer ${SharedPreferenceManager.token}"
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())

View File

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

View File

@@ -1,16 +1,9 @@
package kr.co.vividnext.sodalive.chat.character package kr.co.vividnext.sodalive.chat.character
class CharacterTabRepository(private val api: CharacterApi) { class CharacterTabRepository(private val api: CharacterApi) {
fun getCharacterMain( fun getCharacterMain(token: String) = api.getCharacterMain(authHeader = token)
languageCode: String,
token: String
) = api.getCharacterMain(
languageCode = languageCode,
authHeader = token
)
fun refreshRecommendCharacters( fun refreshRecommendCharacters(
languageCode: String,
token: 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>> val recommendCharacters: LiveData<List<Character>>
get() = _recommendCharacters get() = _recommendCharacters
fun fetchData(languageCode: String) { fun fetchData() {
_isLoading.value = true _isLoading.value = true
compositeDisposable.add( compositeDisposable.add(
repository.getCharacterMain( repository.getCharacterMain(
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}" token = "Bearer ${SharedPreferenceManager.token}"
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
@@ -83,11 +82,10 @@ class CharacterTabViewModel(
) )
} }
fun refreshRecommendCharacters(languageCode: String) { fun refreshRecommendCharacters() {
_isLoading.value = true _isLoading.value = true
compositeDisposable.add( compositeDisposable.add(
repository.refreshRecommendCharacters( repository.refreshRecommendCharacters(
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}" token = "Bearer ${SharedPreferenceManager.token}"
) )
.subscribeOn(Schedulers.io()) .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.chat.talk.room.ChatRoomActivity
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager 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.databinding.FragmentCharacterDetailBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -79,7 +78,7 @@ class CharacterDetailFragment : BaseFragment<FragmentCharacterDetailBinding>(
setupView() setupView()
bindObservers() bindObservers()
viewModel.load(characterId, languageCode = getCurrentLanguageCode(requireContext())) viewModel.load(characterId)
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
@@ -318,8 +317,7 @@ class CharacterDetailFragment : BaseFragment<FragmentCharacterDetailBinding>(
binding.etCommentInput.setText("") binding.etCommentInput.setText("")
showToast(getString(R.string.character_detail_comment_register_success)) showToast(getString(R.string.character_detail_comment_register_success))
viewModel.load( viewModel.load(
targetCharacterId, targetCharacterId
languageCode = getCurrentLanguageCode(requireContext())
) )
} else { } else {
showToast( showToast(

View File

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

View File

@@ -33,15 +33,14 @@ class CharacterDetailViewModel(
private val _uiState = MutableLiveData(UiState()) private val _uiState = MutableLiveData(UiState())
val uiState: LiveData<UiState> get() = _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) _uiState.value = _uiState.value?.copy(isLoading = true, error = null)
val token = "Bearer ${SharedPreferenceManager.token}" val token = "Bearer ${SharedPreferenceManager.token}"
compositeDisposable.add( compositeDisposable.add(
repository.getCharacterDetail( repository.getCharacterDetail(
token = token, token = token,
characterId = characterId, characterId = characterId
languageCode = languageCode
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .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.chat.character.detail.CharacterDetailActivity.Companion.EXTRA_CHARACTER_ID
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog 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.databinding.ActivityNewCharactersAllBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -29,7 +28,6 @@ class NewCharactersAllActivity : BaseActivity<ActivityNewCharactersAllBinding>(
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setupView() setupView()
bindData() bindData()
viewModel.languageCode = getCurrentLanguageCode(this)
viewModel.loadMore() viewModel.loadMore()
} }

View File

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

View File

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

View File

@@ -41,9 +41,4 @@ object Utils {
return "https://voiceon.onelink.me/RkTm?$encodedParams" return "https://voiceon.onelink.me/RkTm?$encodedParams"
} }
fun getCurrentLanguageCode(context: Context): String {
// 효과적 언어 코드(사용자 설정 > 시스템 지원 언어 > ko)를 반환한다.
return LanguageManager.getEffectiveLanguage(context)
}
} }

View File

@@ -13,7 +13,6 @@ interface HomeApi {
@GET("/api/home") @GET("/api/home")
fun getHomeData( fun getHomeData(
@Query("timezone") timezone: String, @Query("timezone") timezone: String,
@Query("languageCode") languageCode: String,
@Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("isAdultContentVisible") isAdultContentVisible: Boolean,
@Query("contentType") contentType: ContentType, @Query("contentType") contentType: ContentType,
@Header("Authorization") authHeader: String @Header("Authorization") authHeader: String

View File

@@ -43,8 +43,6 @@ import kr.co.vividnext.sodalive.chat.character.detail.CharacterDetailActivity.Co
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.common.Utils.getCurrentLanguageCode
import kr.co.vividnext.sodalive.databinding.FragmentHomeBinding import kr.co.vividnext.sodalive.databinding.FragmentHomeBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
@@ -125,7 +123,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
setupView() setupView()
bindData() bindData()
viewModel.fetchData(languageCode = getCurrentLanguageCode(requireContext())) viewModel.fetchData()
} }
override fun onDestroyView() { override fun onDestroyView() {

View File

@@ -5,9 +5,8 @@ import kr.co.vividnext.sodalive.settings.ContentType
import java.util.TimeZone import java.util.TimeZone
class HomeRepository(private val api: HomeApi) { class HomeRepository(private val api: HomeApi) {
fun fetchData(languageCode: String, token: String) = api.getHomeData( fun fetchData(token: String) = api.getHomeData(
timezone = TimeZone.getDefault().id, timezone = TimeZone.getDefault().id,
languageCode = languageCode,
isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible,
contentType = ContentType.entries[SharedPreferenceManager.contentPreference], contentType = ContentType.entries[SharedPreferenceManager.contentPreference],
authHeader = token authHeader = token

View File

@@ -85,12 +85,11 @@ class HomeViewModel(
val recommendContentListLiveData: LiveData<List<AudioContentMainItem>> val recommendContentListLiveData: LiveData<List<AudioContentMainItem>>
get() = _recommendContentListLiveData get() = _recommendContentListLiveData
fun fetchData(languageCode: String) { fun fetchData() {
_isLoading.value = true _isLoading.value = true
compositeDisposable.add( compositeDisposable.add(
repository.fetchData( repository.fetchData(
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}" token = "Bearer ${SharedPreferenceManager.token}"
) )
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())

View File

@@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.settings.language
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import android.os.LocaleList import android.os.LocaleList
import android.text.TextUtils
import java.util.Locale import java.util.Locale
object LocaleHelper { object LocaleHelper {