feat: 메인 홈

- 오디션 리스트를 보여주지 않고 터치시 오디션 페이지로 이동하도록 수정
This commit is contained in:
2025-07-18 21:06:13 +09:00
parent 2f9bace3de
commit 45fd75ab36
9 changed files with 48 additions and 78 deletions

View File

@@ -6,7 +6,6 @@ import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentBannerResponse
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
import kr.co.vividnext.sodalive.audio_content.main.v2.GetContentCurationResponse
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.audition.GetAuditionListItem
import kr.co.vividnext.sodalive.explorer.GetExplorerSectionCreatorResponse
import kr.co.vividnext.sodalive.live.GetRoomListResponse
import kr.co.vividnext.sodalive.settings.event.GetEventResponse
@@ -20,7 +19,6 @@ data class GetHomeResponse(
@SerializedName("bannerList") val bannerList: List<GetAudioContentBannerResponse>,
@SerializedName("eventBannerList") val eventBannerList: GetEventResponse,
@SerializedName("originalAudioDramaList") val originalAudioDramaList: List<GetSeriesListResponse.SeriesListItem>,
@SerializedName("auditionList") val auditionList: List<GetAuditionListItem>,
@SerializedName("dayOfWeekSeriesList") val dayOfWeekSeriesList: List<GetSeriesListResponse.SeriesListItem>,
@SerializedName("contentRanking") val contentRanking: List<GetAudioContentRankingItem>,
@SerializedName("recommendChannelList") val recommendChannelList: List<RecommendChannelResponse>,

View File

@@ -32,7 +32,7 @@ import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBanner
import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
import kr.co.vividnext.sodalive.audio_content.upload.AudioContentUploadActivity
import kr.co.vividnext.sodalive.audition.detail.AuditionDetailActivity
import kr.co.vividnext.sodalive.audition.AuditionActivity
import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog
@@ -54,7 +54,6 @@ import org.koin.android.ext.android.inject
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
import kotlin.math.roundToInt
@OptIn(UnstableApi::class)
class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::inflate) {
@@ -627,62 +626,23 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
private fun setupAudition() {
val layoutParams = binding
.auditionSlider
.ivAudition
.layoutParams as LinearLayout.LayoutParams
val pagerWidth = screenWidth.toDouble()
val pagerHeight = (pagerWidth * 120 / 352).roundToInt()
layoutParams.width = pagerWidth.roundToInt()
layoutParams.height = pagerHeight
val width = screenWidth
val height = width * 198 / 352
layoutParams.width = width
layoutParams.height = height
auditionAdapter = AuditionBannerAdapter(
requireContext(),
pagerWidth.roundToInt(),
pagerHeight
) {
if (SharedPreferenceManager.token.isNotBlank()) {
startActivity(
Intent(requireContext(), AuditionDetailActivity::class.java).apply {
putExtra(Constants.EXTRA_AUDITION_ID, it)
}
binding.ivAudition.layoutParams = layoutParams
binding.ivAudition.setOnClickListener {
startActivity(
Intent(
requireContext(),
AuditionActivity::class.java
)
} else {
(requireActivity() as MainActivity).showLoginActivity()
}
}
binding
.auditionSlider
.layoutParams = layoutParams
binding.auditionSlider.apply {
adapter = auditionAdapter as BaseBannerAdapter<Any>
setLifecycleRegistry(lifecycle)
setScrollDuration(1000)
setInterval(4 * 1000)
}.create()
binding
.auditionSlider
.setIndicatorView(binding.indicatorAudition)
.setIndicatorStyle(IndicatorStyle.ROUND_RECT)
.setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
.setIndicatorVisibility(View.GONE)
.setIndicatorSliderColor(
ContextCompat.getColor(requireContext(), R.color.color_909090),
ContextCompat.getColor(requireContext(), R.color.color_3bb9f1)
)
.setIndicatorSliderWidth(10f.dpToPx().toInt(), 10f.dpToPx().toInt())
.setIndicatorHeight(10f.dpToPx().toInt())
viewModel.auditionListLiveData.observe(viewLifecycleOwner) {
if (it.isNotEmpty()) {
binding.llAudition.visibility = View.VISIBLE
binding.auditionSlider.refreshData(it)
} else {
binding.llAudition.visibility = View.GONE
}
}
}

View File

@@ -50,10 +50,6 @@ class HomeViewModel(private val repository: HomeRepository) : BaseViewModel() {
val originalAudioDramaListLiveData: LiveData<List<GetSeriesListResponse.SeriesListItem>>
get() = _originalAudioDramaListLiveData
private var _auditionListLiveData = MutableLiveData<List<GetAuditionListItem>>()
val auditionListLiveData: LiveData<List<GetAuditionListItem>>
get() = _auditionListLiveData
private var _dayOfWeekSeriesListLiveData =
MutableLiveData<List<GetSeriesListResponse.SeriesListItem>>()
val dayOfWeekSeriesListLiveData: LiveData<List<GetSeriesListResponse.SeriesListItem>>
@@ -97,7 +93,6 @@ class HomeViewModel(private val repository: HomeRepository) : BaseViewModel() {
_latestContentListLiveData.value = data.latestContentList
_eventBannerListLiveData.value = data.bannerList
_originalAudioDramaListLiveData.value = data.originalAudioDramaList
_auditionListLiveData.value = data.auditionList
_dayOfWeekSeriesListLiveData.value = data.dayOfWeekSeriesList
_contentRankingLiveData.value = data.contentRanking
_freeContentListLiveData.value = data.freeContentList