From 81bdd52eddb32ce62f81bf7cc26c47421525176c Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 2 Nov 2023 21:05:39 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B8=EA=B8=B0=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=EC=A0=84=EC=B2=B4=20=EB=B3=B4=EA=B8=B0=20-=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/audio_content/AudioContentApi.kt | 5 ++ .../audio_content/AudioContentRepository.kt | 2 + .../all/AudioContentRankingAllActivity.kt | 56 ++++++++++++++++++- .../all/AudioContentRankingAllViewModel.kt | 42 +++++++++++++- .../main/AudioContentMainFragment.kt | 2 +- .../activity_audio_content_ranking_all.xml | 12 +++- 6 files changed, 114 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentApi.kt index 0278eec..c44078a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentApi.kt @@ -170,6 +170,11 @@ interface AudioContentApi { @Header("Authorization") authHeader: String ): Single>> + @GET("/audio-content/ranking-sort-type") + fun getContentRankingSortType( + @Header("Authorization") authHeader: String + ): Single>> + @GET("/audio-content/ranking") fun getContentRanking( @Query("page") page: Int, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentRepository.kt index ac5bc7d..4db1c5d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/AudioContentRepository.kt @@ -164,6 +164,8 @@ class AudioContentRepository( authHeader = token ) + fun getContentRankingSortType(token: String) = api.getContentRankingSortType(authHeader = token) + fun getContentRanking( page: Int, size: Int, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentRankingAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentRankingAllActivity.kt index c7bce6e..5d41f61 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentRankingAllActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentRankingAllActivity.kt @@ -9,6 +9,7 @@ import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity +import kr.co.vividnext.sodalive.audio_content.main.AudioContentMainNewContentThemeAdapter import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.LoadingDialog @@ -23,11 +24,13 @@ class AudioContentRankingAllActivity : BaseActivity { + outRect.left = 0 + outRect.right = 4f.dpToPx().toInt() + } + + sortAdapter.itemCount - 1 -> { + outRect.left = 4f.dpToPx().toInt() + outRect.right = 0 + } + + else -> { + outRect.left = 4f.dpToPx().toInt() + outRect.right = 4f.dpToPx().toInt() + } + } + } + }) + + binding.rvContentRankingSort.adapter = sortAdapter } @SuppressLint("NotifyDataSetChanged") @@ -120,12 +170,16 @@ class AudioContentRankingAllActivity : BaseActivity get() = _dateStringLiveData + private var _contentRankingSortListLiveData = MutableLiveData>() + val contentRankingSortListLiveData: LiveData> + get() = _contentRankingSortListLiveData + private var _contentRankingItemsLiveData = MutableLiveData>() val contentRankingItemsLiveData: LiveData> get() = _contentRankingItemsLiveData @@ -33,6 +37,8 @@ class AudioContentRankingAllViewModel( private var pageSize = 10 private var isLast = false + private var selectedSort = "매출" + fun getAudioContentRanking() { if (!_isLoading.value!! && !isLast && page <= 5) { _isLoading.value = true @@ -40,6 +46,7 @@ class AudioContentRankingAllViewModel( repository.getContentRanking( page = page, size = pageSize, + sortType = selectedSort, token = "Bearer ${SharedPreferenceManager.token}" ) .subscribeOn(Schedulers.io()) @@ -56,7 +63,6 @@ class AudioContentRankingAllViewModel( _contentRankingItemsLiveData.value = it.data.items } else { isLast = true - _contentRankingItemsLiveData.value = listOf() } } else { _isLoading.value = false @@ -77,4 +83,38 @@ class AudioContentRankingAllViewModel( ) } } + + fun getAudioContentRankingSortType() { + compositeDisposable.add( + repository.getContentRankingSortType(token = "Bearer ${SharedPreferenceManager.token}") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + { + if (it.success && it.data != null) { + _contentRankingSortListLiveData.value = it.data!! + } else { + if (it.message != null) { + _toastLiveData.postValue(it.message) + } else { + _toastLiveData.postValue( + "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ) + } + } + }, + { + it.message?.let { message -> Logger.e(message) } + _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + } + ) + ) + } + + fun selectSort(sort: String) { + page = 1 + isLast = false + selectedSort = sort + getAudioContentRanking() + } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/AudioContentMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/AudioContentMainFragment.kt index 087e379..85500b9 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/AudioContentMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/AudioContentMainFragment.kt @@ -395,7 +395,7 @@ class AudioContentMainFragment : BaseFragment( outRect.right = 4f.dpToPx().toInt() } - newContentThemeAdapter.itemCount - 1 -> { + contentRankingSortAdapter.itemCount - 1 -> { outRect.left = 4f.dpToPx().toInt() outRect.right = 0 } diff --git a/app/src/main/res/layout/activity_audio_content_ranking_all.xml b/app/src/main/res/layout/activity_audio_content_ranking_all.xml index 0ad77b6..04ca078 100644 --- a/app/src/main/res/layout/activity_audio_content_ranking_all.xml +++ b/app/src/main/res/layout/activity_audio_content_ranking_all.xml @@ -36,11 +36,19 @@ android:textSize="13.3sp" /> + + + android:paddingHorizontal="6.7dp" />