From 533da80986f7846500104b7faa0bbc35d569c599 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 20 Nov 2025 18:26:49 +0900 Subject: [PATCH] =?UTF-8?q?feat(series-list-all):=20=EC=99=84=EA=B2=B0?= =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EC=A0=84=EC=B2=B4=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../audio_content/series/SeriesApi.kt | 1 + .../series/SeriesListAllActivity.kt | 10 +++++- .../series/SeriesListAllViewModel.kt | 4 ++- .../audio_content/series/SeriesRepository.kt | 2 ++ .../main/home/SeriesMainHomeFragment.kt | 12 +++++++ .../co/vividnext/sodalive/common/Constants.kt | 1 + .../vividnext/sodalive/home/HomeFragment.kt | 2 +- .../res/layout/fragment_series_main_home.xml | 31 ++++++++++++++----- 8 files changed, 53 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesApi.kt index 1820ac1a..a9d5c864 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesApi.kt @@ -18,6 +18,7 @@ interface SeriesApi { @Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("contentType") contentType: ContentType, @Query("isOriginal") isOriginal: Boolean?, + @Query("isCompleted") isCompleted: Boolean?, @Query("page") page: Int, @Query("size") size: Int, @Header("Authorization") authHeader: String diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllActivity.kt index c1281a23..8648265b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllActivity.kt @@ -30,6 +30,7 @@ class SeriesListAllActivity : BaseActivity( val passedCreatorId = intent.getLongExtra(Constants.EXTRA_USER_ID, 0) val isOriginal = intent.getBooleanExtra(Constants.EXTRA_IS_ORIGINAL, false) + val isCompleted = intent.getBooleanExtra(Constants.EXTRA_IS_COMPLETED, false) bindData() @@ -38,6 +39,11 @@ class SeriesListAllActivity : BaseActivity( } else { null } + viewModel.isCompleted = if (isCompleted) { + true + } else { + null + } viewModel.isOriginal = if (isOriginal) { true } else { @@ -49,7 +55,9 @@ class SeriesListAllActivity : BaseActivity( override fun setupView() { loadingDialog = LoadingDialog(this, layoutInflater) binding.toolbar.tvBack.text = - if (intent.getBooleanExtra(Constants.EXTRA_IS_ORIGINAL, false)) { + if (intent.getBooleanExtra(Constants.EXTRA_IS_COMPLETED, false)) { + "완결 시리즈" + } else if (intent.getBooleanExtra(Constants.EXTRA_IS_ORIGINAL, false)) { "오직 보이스온에서만" } else { "시리즈 전체보기" diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllViewModel.kt index d9d86d7e..a4d2be1e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAllViewModel.kt @@ -29,10 +29,11 @@ class SeriesListAllViewModel(private val repository: SeriesRepository) : BaseVie get() = _seriesListLiveData var creatorId: Long? = null + var isCompleted: Boolean? = null var isOriginal: Boolean? = null var isLast = false var page = 1 - private val size = 10 + private val size = 20 fun getSeriesList() { if (!_isLoading.value!! && !isLast) { @@ -42,6 +43,7 @@ class SeriesListAllViewModel(private val repository: SeriesRepository) : BaseVie repository.getSeriesList( creatorId = creatorId, isOriginal = isOriginal, + isCompleted = isCompleted, sortType = SeriesSortType.NEWEST, page = page, size = size, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesRepository.kt index 82a3b769..e20399f7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesRepository.kt @@ -7,6 +7,7 @@ class SeriesRepository(private val api: SeriesApi) { fun getSeriesList( creatorId: Long?, isOriginal: Boolean?, + isCompleted: Boolean?, sortType: SeriesListAllViewModel.SeriesSortType, page: Int, size: Int, @@ -17,6 +18,7 @@ class SeriesRepository(private val api: SeriesApi) { isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, contentType = ContentType.entries[SharedPreferenceManager.contentPreference], isOriginal = isOriginal, + isCompleted = isCompleted, page = page - 1, size = size, authHeader = token diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt index 6938169d..3cf4cbf1 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/home/SeriesMainHomeFragment.kt @@ -16,6 +16,7 @@ import com.zhpan.bannerview.BaseBannerAdapter import com.zhpan.indicator.enums.IndicatorSlideMode import com.zhpan.indicator.enums.IndicatorStyle import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.audio_content.series.SeriesListAllActivity import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity import kr.co.vividnext.sodalive.base.BaseFragment import kr.co.vividnext.sodalive.common.Constants @@ -166,6 +167,17 @@ class SeriesMainHomeFragment : BaseFragment( }) recyclerView.adapter = completedAdapter + binding.tvCompletedSeriesAll.setOnClickListener { + startActivity( + Intent( + requireContext(), + SeriesListAllActivity::class.java + ).apply { + putExtra(Constants.EXTRA_IS_COMPLETED, true) + } + ) + } + viewModel.completedSeriesLiveData.observe(viewLifecycleOwner) { if (it.isNotEmpty()) { binding.llCompletedSeries.visibility = View.VISIBLE diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt index 9b96cb92..bc59949d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/Constants.kt @@ -96,4 +96,5 @@ object Constants { // Series List All options const val EXTRA_IS_ORIGINAL = "extra_is_original" + const val EXTRA_IS_COMPLETED = "extra_is_completed" } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt index 99bf6122..9663ecc8 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt @@ -653,7 +653,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl requireContext(), SeriesListAllActivity::class.java ).apply { - putExtra(kr.co.vividnext.sodalive.common.Constants.EXTRA_IS_ORIGINAL, true) + putExtra(Constants.EXTRA_IS_ORIGINAL, true) } ) } else { diff --git a/app/src/main/res/layout/fragment_series_main_home.xml b/app/src/main/res/layout/fragment_series_main_home.xml index 91729c6f..79aca2b0 100644 --- a/app/src/main/res/layout/fragment_series_main_home.xml +++ b/app/src/main/res/layout/fragment_series_main_home.xml @@ -42,16 +42,33 @@ android:orientation="vertical" android:visibility="gone"> - + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="24dp"> + + + + +