콘텐츠 상세 - 폰 언어 설정에 따라 번역 데이터를 조회하도록 수정

This commit is contained in:
2025-12-11 23:04:23 +09:00
parent e2c7134f61
commit 4e15557949
6 changed files with 30 additions and 8 deletions

View File

@@ -105,6 +105,7 @@ interface AudioContentApi {
@GET("/audio-content/{id}")
fun getAudioContentDetail(
@Path("id") id: Long,
@Query("languageCode") languageCode: String?,
@Query("timezone") timezone: String,
@Header("Authorization") authHeader: String
): Single<ApiResponse<GetAudioContentDetailResponse>>

View File

@@ -70,8 +70,13 @@ class AudioContentRepository(
authHeader = token
)
fun getAudioContentDetail(audioContentId: Long, token: String) = api.getAudioContentDetail(
fun getAudioContentDetail(
audioContentId: Long,
languageCode: String? = null,
token: String
) = api.getAudioContentDetail(
id = audioContentId,
languageCode = languageCode,
timezone = TimeZone.getDefault().id,
authHeader = token
)

View File

@@ -43,6 +43,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog
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.ActivityAudioContentDetailBinding
import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
@@ -129,6 +130,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
}
bindData()
viewModel.languageCode = getCurrentLanguageCode(applicationContext)
viewModel.getAudioContentDetail(audioContentId = audioContentId) { finish() }
}
@@ -453,7 +455,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
}
)
title = it.title
title = it.translated?.title ?: it.title
setupCreatorArea(it.creator)
setupMosaicArea(it.isMosaic)
setupPlayArea(it)
@@ -907,13 +909,13 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
binding.tvRemainingTime.visibility = View.GONE
}
binding.tvTitle.text = response.title
binding.tvDetail.text = response.detail
binding.tvTitle.text = response.translated?.title ?: response.title
binding.tvDetail.text = response.translated?.detail ?: response.detail
binding.tvDetail.setOnClickListener { viewModel.toggleExpandDetail() }
if (response.tag.isNotBlank()) {
binding.tvTag.visibility = View.VISIBLE
binding.tvTag.text = response.tag
binding.tvTag.text = response.translated?.tags ?: response.tag
} else {
binding.tvTag.visibility = View.GONE
}

View File

@@ -55,10 +55,15 @@ class AudioContentDetailViewModel(
val isContentPlayLoopLiveData: LiveData<Boolean>
get() = _isContentPlayLoopLiveData
var languageCode: String = "ko"
private fun getString(@StringRes resId: Int, vararg args: Any) =
SodaLiveApplicationHolder.get().getString(resId, *args)
fun getAudioContentDetail(audioContentId: Long, onFailure: (() -> Unit)? = null) {
fun getAudioContentDetail(
audioContentId: Long,
onFailure: (() -> Unit)? = null
) {
if (!isLoading.value!!) {
isLoading.value = true
}
@@ -66,6 +71,7 @@ class AudioContentDetailViewModel(
compositeDisposable.add(
repository.getAudioContentDetail(
audioContentId = audioContentId,
languageCode = languageCode,
token = "Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io())

View File

@@ -43,7 +43,8 @@ data class GetAudioContentDetailResponse(
@SerializedName("previousContent") val previousContent: OtherContentResponse?,
@SerializedName("nextContent") val nextContent: OtherContentResponse?,
@SerializedName("buyerList") val buyerList: List<ContentBuyer>,
@SerializedName("isAvailableUsePoint") val isAvailableUsePoint: Boolean
@SerializedName("isAvailableUsePoint") val isAvailableUsePoint: Boolean,
@SerializedName("translated") val translated: TranslatedContent?
)
@Keep
@@ -68,3 +69,10 @@ data class ContentBuyer(
@SerializedName("nickname") val nickname: String,
@SerializedName("profileImageUrl") val profileImageUrl: String
)
@Keep
data class TranslatedContent(
@SerializedName("title") val title: String?,
@SerializedName("detail") val detail: String?,
@SerializedName("tags") val tags: String?
)

View File

@@ -95,7 +95,7 @@ class AlarmActivity : BaseActivity<ActivityAlarmBinding>(
}
private fun getContent(contentId: Long) {
contentViewModel.getAudioContentDetail(contentId) {}
contentViewModel.getAudioContentDetail(contentId, {},)
}
private fun bindData() {