parent
2ff2c2224a
commit
f5979ef745
|
@ -276,6 +276,12 @@ interface AudioContentApi {
|
||||||
@Header("Authorization") authHeader: String
|
@Header("Authorization") authHeader: String
|
||||||
): Single<ApiResponse<List<GetSeriesListResponse.SeriesListItem>>>
|
): 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")
|
@GET("/v2/audio-content/main/content")
|
||||||
fun getContentMainContent(
|
fun getContentMainContent(
|
||||||
@Header("Authorization") authHeader: String
|
@Header("Authorization") authHeader: String
|
||||||
|
|
|
@ -27,10 +27,12 @@ class ContentRankCreatorAdapter(
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
fun bind(item: ContentCreatorResponse) {
|
fun bind(item: ContentCreatorResponse) {
|
||||||
binding.root.setOnClickListener {
|
binding.root.setOnClickListener {
|
||||||
|
if (selectedCreatorId != item.creatorId) {
|
||||||
selectedCreatorId = item.creatorId
|
selectedCreatorId = item.creatorId
|
||||||
onClickItem(item.creatorId)
|
onClickItem(item.creatorId)
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
binding.tvNickname.text = item.creatorNickname
|
binding.tvNickname.text = item.creatorNickname
|
||||||
binding.ivProfile.load(item.creatorProfileImageUrl) {
|
binding.ivProfile.load(item.creatorProfileImageUrl) {
|
||||||
|
|
|
@ -527,6 +527,7 @@ class AudioContentMainTabSeriesFragment : BaseFragment<FragmentAudioContentMainT
|
||||||
recommendSeriesCreatorAdapter = ContentRankCreatorAdapter {
|
recommendSeriesCreatorAdapter = ContentRankCreatorAdapter {
|
||||||
binding.llNoItems.visibility = View.VISIBLE
|
binding.llNoItems.visibility = View.VISIBLE
|
||||||
binding.rvRecommendSeriesByChannel.visibility = View.GONE
|
binding.rvRecommendSeriesByChannel.visibility = View.GONE
|
||||||
|
viewModel.getRecommendSeriesByCreator(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
val recyclerView = binding.rvRecommendSeriesChannel
|
val recyclerView = binding.rvRecommendSeriesChannel
|
||||||
|
@ -633,6 +634,7 @@ class AudioContentMainTabSeriesFragment : BaseFragment<FragmentAudioContentMainT
|
||||||
recyclerView.adapter = recommendSeriesByChannelAdapter
|
recyclerView.adapter = recommendSeriesByChannelAdapter
|
||||||
|
|
||||||
viewModel.recommendSeriesByChannelLiveData.observe(viewLifecycleOwner) {
|
viewModel.recommendSeriesByChannelLiveData.observe(viewLifecycleOwner) {
|
||||||
|
recommendSeriesByChannelAdapter.clear()
|
||||||
recommendSeriesByChannelAdapter.addItems(it)
|
recommendSeriesByChannelAdapter.addItems(it)
|
||||||
if (recommendSeriesCreatorAdapter.itemCount <= 0) {
|
if (recommendSeriesCreatorAdapter.itemCount <= 0) {
|
||||||
binding.llNoItems.visibility = View.VISIBLE
|
binding.llNoItems.visibility = View.VISIBLE
|
||||||
|
|
|
@ -8,4 +8,9 @@ class AudioContentMainTabSeriesRepository(private val api: AudioContentApi) {
|
||||||
genreId: Long,
|
genreId: Long,
|
||||||
token: String
|
token: String
|
||||||
) = api.getRecommendSeriesListByGenre(genreId, authHeader = token)
|
) = api.getRecommendSeriesListByGenre(genreId, authHeader = token)
|
||||||
|
|
||||||
|
fun getRecommendSeriesByCreator(
|
||||||
|
creatorId: Long,
|
||||||
|
token: String
|
||||||
|
) = api.getRecommendSeriesByCreator(creatorId, authHeader = token)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue