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 87b5a80e..1820ac1a 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 @@ -13,10 +13,11 @@ import retrofit2.http.Query interface SeriesApi { @GET("/audio-content/series") fun getSeriesList( - @Query("creatorId") creatorId: Long, + @Query("creatorId") creatorId: Long?, @Query("sortType") sortType: SeriesListAllViewModel.SeriesSortType, @Query("isAdultContentVisible") isAdultContentVisible: Boolean, @Query("contentType") contentType: ContentType, + @Query("isOriginal") isOriginal: 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/SeriesListAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAdapter.kt index 1c54eb28..d14d1de3 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/SeriesListAdapter.kt @@ -33,7 +33,6 @@ class SeriesListAdapter( binding.clCover.layoutParams = lp binding.ivCover.load(item.coverImage) { - crossfade(true) placeholder(R.drawable.bg_placeholder) transformations(RoundedCornersTransformation(5f.dpToPx())) } 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 337b49fc..c1281a23 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 @@ -9,9 +9,10 @@ import androidx.recyclerview.widget.RecyclerView import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.Constants -import kr.co.vividnext.sodalive.common.DifferentSpacingItemDecoration +import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.ActivitySeriesListAllBinding +import kr.co.vividnext.sodalive.extensions.dpToPx import org.koin.android.ext.android.inject import kotlin.math.roundToInt @@ -27,25 +28,36 @@ class SeriesListAllActivity : BaseActivity( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val creatorId = intent.getLongExtra(Constants.EXTRA_USER_ID, 0) - if (creatorId <= 0) { - Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show() - finish() - } + val passedCreatorId = intent.getLongExtra(Constants.EXTRA_USER_ID, 0) + val isOriginal = intent.getBooleanExtra(Constants.EXTRA_IS_ORIGINAL, false) bindData() - viewModel.creatorId = creatorId + viewModel.creatorId = if (passedCreatorId > 0) { + passedCreatorId + } else { + null + } + viewModel.isOriginal = if (isOriginal) { + true + } else { + null + } viewModel.getSeriesList() } override fun setupView() { loadingDialog = LoadingDialog(this, layoutInflater) - binding.toolbar.tvBack.text = "시리즈 전체보기" + binding.toolbar.tvBack.text = + if (intent.getBooleanExtra(Constants.EXTRA_IS_ORIGINAL, false)) { + "오직 보이스온에서만" + } else { + "시리즈 전체보기" + } binding.toolbar.tvBack.setOnClickListener { finish() } seriesAdapter = SeriesListAdapter( - itemWidth = ((screenWidth - (13.3 * 3)) / 3).roundToInt(), + itemWidth = ((screenWidth - 24f.dpToPx() * 2 - 16f.dpToPx()) / 2f).roundToInt(), onClickItem = { startActivity( Intent(applicationContext, SeriesDetailActivity::class.java).apply { @@ -57,20 +69,13 @@ class SeriesListAllActivity : BaseActivity( isVisibleCreator = false ) - val spanCount = 3 - val horizontalSpacing = 20 - val verticalSpacing = 100 + val spanCount = 2 + val spacingPx = 16f.dpToPx().toInt() val recyclerView = binding.rvSeriesAll recyclerView.layoutManager = GridLayoutManager(this, spanCount) recyclerView.addItemDecoration( - DifferentSpacingItemDecoration( - spanCount = spanCount, - horizontalSpacing = horizontalSpacing, - verticalSpacing = verticalSpacing, - includeEdge = true - - ) + GridSpacingItemDecoration(spanCount, spacingPx, true) ) recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { 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 d2673749..d9d86d7e 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 @@ -28,7 +28,8 @@ class SeriesListAllViewModel(private val repository: SeriesRepository) : BaseVie val seriesListLiveData: LiveData> get() = _seriesListLiveData - var creatorId = 0L + var creatorId: Long? = null + var isOriginal: Boolean? = null var isLast = false var page = 1 private val size = 10 @@ -40,6 +41,7 @@ class SeriesListAllViewModel(private val repository: SeriesRepository) : BaseVie compositeDisposable.add( repository.getSeriesList( creatorId = creatorId, + isOriginal = isOriginal, 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 565a13d1..82a3b769 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 @@ -5,7 +5,8 @@ import kr.co.vividnext.sodalive.settings.ContentType class SeriesRepository(private val api: SeriesApi) { fun getSeriesList( - creatorId: Long, + creatorId: Long?, + isOriginal: Boolean?, sortType: SeriesListAllViewModel.SeriesSortType, page: Int, size: Int, @@ -14,7 +15,8 @@ class SeriesRepository(private val api: SeriesApi) { creatorId = creatorId, sortType = sortType, isAdultContentVisible = SharedPreferenceManager.isAdultContentVisible, - contentType = ContentType.values()[SharedPreferenceManager.contentPreference], + contentType = ContentType.entries[SharedPreferenceManager.contentPreference], + isOriginal = isOriginal, page = page - 1, size = size, authHeader = token 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 b6b5c775..9b96cb92 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 @@ -93,4 +93,7 @@ object Constants { const val EXTRA_ALARM_ID = "alarm_id" const val EXTRA_ROULETTE_AVAILABLE_ACTIVE = "roulette_available_active" + + // Series List All options + const val EXTRA_IS_ORIGINAL = "extra_is_original" } 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 1eb58abe..6e65eebf 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 @@ -642,6 +642,19 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl }) recyclerView.adapter = originalSeriesAdapter + binding.tvSeriesOriginalAll.setOnClickListener { + // ‘오직 보이스온에서만’ 전체보기: isOriginal=true로 시리즈 전체보기 화면 진입 + if (SharedPreferenceManager.token.isNotBlank()) { + startActivity( + Intent(requireContext(), kr.co.vividnext.sodalive.audio_content.series.SeriesListAllActivity::class.java).apply { + putExtra(kr.co.vividnext.sodalive.common.Constants.EXTRA_IS_ORIGINAL, true) + } + ) + } else { + (requireActivity() as MainActivity).showLoginActivity() + } + } + viewModel.originalAudioDramaListLiveData.observe(viewLifecycleOwner) { if (it.isNotEmpty()) { binding.llSeriesOriginal.visibility = View.VISIBLE diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 044d6eda..5e5d1a8b 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -199,15 +199,33 @@ android:orientation="vertical" android:visibility="gone"> - + + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingHorizontal="24dp"> + + + + +