diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt index e0300799..0799014b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt @@ -387,6 +387,7 @@ class CreatorChannelActivity : bindHeader(header) bindTitleBar(header) updateOwnerFabVisibility() + findLiveFragment()?.onCreatorChannelOwnerChanged(header.isOwner) } override fun onCreatorChannelFollowProgressChanged(inProgress: Boolean) { @@ -425,6 +426,10 @@ class CreatorChannelActivity : postCheckCreatorChannelLiveNeedsMore() } + override fun isCreatorChannelOwner(): Boolean { + return currentHeader?.isOwner == true + } + private fun setupOwnerFabInsets() { ViewCompat.setOnApplyWindowInsetsListener(binding.ownerFabButton) { _, insets -> val navigationBottomInset = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom @@ -556,6 +561,10 @@ class CreatorChannelActivity : startAudioContentDetail(audioContentId) } + override fun onCreatorChannelLiveStartClicked() { + onOwnerFabLiveClicked() + } + private fun findLiveFragment(): CreatorChannelLiveFragment? { val fragmentTag = "f${CreatorChannelTab.Live.ordinal}" return supportFragmentManager.findFragmentByTag(fragmentTag) as? CreatorChannelLiveFragment diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt index 5870727b..c39309a1 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt @@ -3,11 +3,17 @@ package kr.co.vividnext.sodalive.v2.creator.channel.live import android.os.Bundle import android.view.View import android.widget.Toast +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible +import androidx.core.view.updateLayoutParams +import androidx.core.view.updatePadding import androidx.recyclerview.widget.LinearLayoutManager import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseFragment import kr.co.vividnext.sodalive.databinding.FragmentCreatorChannelLiveBinding +import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelLiveResponse import kr.co.vividnext.sodalive.v2.creator.channel.live.model.toLabelResId @@ -28,6 +34,8 @@ class CreatorChannelLiveFragment : BaseFragment + ownerCtaBottomInset = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom + updateOwnerCtaInsets() + insets + } + ViewCompat.requestApplyInsets(binding.layoutCreatorChannelLiveOwnerCta) + } + private fun setupClickListeners() { binding.ivCreatorChannelLiveSort.setImageResource(R.drawable.ic_new_sort) binding.layoutCreatorChannelLiveSortButton.setOnClickListener { @@ -71,6 +99,29 @@ class CreatorChannelLiveFragment : BaseFragment { + bottomMargin = baseBottomMargin + ownerCtaBottomInset + } + rvCreatorChannelLiveReplays.updatePadding(bottom = listBottomPadding) } private fun observeViewModel() { @@ -174,13 +225,18 @@ class CreatorChannelLiveFragment : BaseFragment")) + assertTrue(fragment.contains("rvCreatorChannelLiveReplays.updatePadding")) + assertTrue(fragment.contains("onCreatorChannelOwnerChanged(isOwner: Boolean)")) + assertTrue(fragment.contains("bindOwnerCta(host.isCreatorChannelOwner())")) + assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.isVisible = isOwner")) + assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.setOnClickListener")) + assertTrue(fragment.contains("host.onCreatorChannelLiveStartClicked()")) + assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.isEnabled = false")) + assertTrue(fragment.contains("onResume()")) + assertTrue(fragment.contains("interface Host")) + assertTrue(fragment.contains("fun isCreatorChannelOwner(): Boolean")) + assertTrue(fragment.contains("fun onCreatorChannelLiveStartClicked()")) + } + @Test fun `라이브 sort popup source는 outside dismiss와 화면 밖 보정 및 같은 정렬 dismiss를 포함한다`() { val popup = projectFile(