콘텐츠 메인 - 시리즈 탭 - 채널별 추천 시리즈

- 채널 터치 액션 추가
This commit is contained in:
klaus 2025-02-14 14:21:24 +09:00
parent 2ff2c2224a
commit f5979ef745
5 changed files with 49 additions and 3 deletions

View File

@ -276,6 +276,12 @@ interface AudioContentApi {
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetSeriesListResponse.SeriesListItem>>>
@GET("/v2/audio-content/main/series/recommend-series-by-creator")
fun getRecommendSeriesByCreator(
@Query("creatorId") creatorId: Long,
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<GetSeriesListResponse.SeriesListItem>>>
@GET("/v2/audio-content/main/content")
fun getContentMainContent(
@Header("Authorization") authHeader: String

View File

@ -27,9 +27,11 @@ class ContentRankCreatorAdapter(
@SuppressLint("NotifyDataSetChanged")
fun bind(item: ContentCreatorResponse) {
binding.root.setOnClickListener {
selectedCreatorId = item.creatorId
onClickItem(item.creatorId)
notifyDataSetChanged()
if (selectedCreatorId != item.creatorId) {
selectedCreatorId = item.creatorId
onClickItem(item.creatorId)
notifyDataSetChanged()
}
}
binding.tvNickname.text = item.creatorNickname

View File

@ -527,6 +527,7 @@ class AudioContentMainTabSeriesFragment : BaseFragment<FragmentAudioContentMainT
recommendSeriesCreatorAdapter = ContentRankCreatorAdapter {
binding.llNoItems.visibility = View.VISIBLE
binding.rvRecommendSeriesByChannel.visibility = View.GONE
viewModel.getRecommendSeriesByCreator(it)
}
val recyclerView = binding.rvRecommendSeriesChannel
@ -633,6 +634,7 @@ class AudioContentMainTabSeriesFragment : BaseFragment<FragmentAudioContentMainT
recyclerView.adapter = recommendSeriesByChannelAdapter
viewModel.recommendSeriesByChannelLiveData.observe(viewLifecycleOwner) {
recommendSeriesByChannelAdapter.clear()
recommendSeriesByChannelAdapter.addItems(it)
if (recommendSeriesCreatorAdapter.itemCount <= 0) {
binding.llNoItems.visibility = View.VISIBLE

View File

@ -8,4 +8,9 @@ class AudioContentMainTabSeriesRepository(private val api: AudioContentApi) {
genreId: Long,
token: String
) = api.getRecommendSeriesListByGenre(genreId, authHeader = token)
fun getRecommendSeriesByCreator(
creatorId: Long,
token: String
) = api.getRecommendSeriesByCreator(creatorId, authHeader = token)
}

View File

@ -149,4 +149,35 @@ class AudioContentMainTabSeriesViewModel(
)
)
}
fun getRecommendSeriesByCreator(creatorId: Long) {
_isLoading.value = true
compositeDisposable.add(
repository.getRecommendSeriesByCreator(creatorId, token = "Bearer ${SharedPreferenceManager.token}")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
if (it.success && it.data != null) {
_recommendSeriesByChannelLiveData.value = it.data!!
} else {
if (it.message != null) {
_toastLiveData.postValue(it.message)
} else {
_toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
)
}
}
_isLoading.value = false
},
{
_isLoading.value = false
it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
}
)
)
}
}