diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/GetHomeResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/GetHomeResponse.kt index d7e6a663..84a2fcbe 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/GetHomeResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/GetHomeResponse.kt @@ -25,5 +25,6 @@ data class GetHomeResponse( @SerializedName("contentRanking") val contentRanking: List, @SerializedName("recommendChannelList") val recommendChannelList: List, @SerializedName("freeContentList") val freeContentList: List, + @SerializedName("pointAvailableContentList") val pointAvailableContentList: List, @SerializedName("curationList") val curationList: List ) 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 44988dd7..6fbc64b1 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 @@ -86,6 +86,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl private lateinit var weelyChartAdapter: HomeWeeklyChartAdapter private lateinit var recommendChannelAdapter: HomeRecommendChannelAdapter private lateinit var homeFreeContentAdapter: HomeContentAdapter + private lateinit var homePointContentAdapter: HomeContentAdapter private lateinit var curationAdapter: HomeCurationAdapter private val handler = Handler(Looper.getMainLooper()) @@ -190,6 +191,7 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl setupWeelyChart() setupRecommendChannel() setupFreeContent() + setupPointContent() setupCuration() } @@ -1089,6 +1091,73 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl } } + private fun setupPointContent() { + val spSectionTitle = SpannableString(binding.tvPointContent.text) + spSectionTitle.setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + requireContext(), + R.color.color_3bb9f1 + ) + ), + 0, + 3, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + binding.tvPointContent.text = spSectionTitle + + homePointContentAdapter = HomeContentAdapter { + if (SharedPreferenceManager.token.isNotBlank()) { + startActivity( + Intent(requireContext(), AudioContentDetailActivity::class.java).apply { + putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it) + } + ) + } else { + (requireActivity() as MainActivity).showLoginActivity() + } + } + + val rvContent = binding.rvPointContent + rvContent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) + rvContent.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.top = 8f.dpToPx().toInt() + outRect.bottom = 8f.dpToPx().toInt() + + val position = parent.getChildAdapterPosition(view) + + if (position == 0) { + outRect.left = 0f.dpToPx().toInt() + } else { + outRect.left = 8f.dpToPx().toInt() + } + + outRect.right = 8f.dpToPx().toInt() + } + }) + rvContent.adapter = homePointContentAdapter + + viewModel.pointAvailableContentListLiveData.observe(viewLifecycleOwner) { + if (it.isNotEmpty()) { + binding.llPointContent.visibility = View.VISIBLE + homePointContentAdapter.addItems(it) + } else { + binding.llPointContent.visibility = View.GONE + } + } + + binding.tvPointContentAll.setOnClickListener { + // TODO: 전체보기 클릭 액션은 추후에 추가 예정 + } + } + private fun setupCuration() { curationAdapter = HomeCurationAdapter( onClickItem = { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeViewModel.kt index da56dafb..9b3d0237 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeViewModel.kt @@ -80,6 +80,10 @@ class HomeViewModel( val curationListLiveData: LiveData> get() = _curationListLiveData + private var _pointAvailableContentListLiveData = MutableLiveData>() + val pointAvailableContentListLiveData: LiveData> + get() = _pointAvailableContentListLiveData + fun fetchData() { _isLoading.value = true @@ -106,6 +110,7 @@ class HomeViewModel( _popularCharacters.value = data.popularCharacters _contentRankingLiveData.value = data.contentRanking _freeContentListLiveData.value = data.freeContentList + _pointAvailableContentListLiveData.value = data.pointAvailableContentList _curationListLiveData.value = data.curationList _recommendChannelListLiveData.value = data.recommendChannelList } else { diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 7add2f8c..dc6c53fd 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -389,6 +389,51 @@ android:paddingHorizontal="24dp" /> + + + + + + + + + + + + +