feat(creator): 시리즈 탭 activity 연동을 추가한다
This commit is contained in:
@@ -60,6 +60,7 @@ import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelHeaderUiM
|
|||||||
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelScrollState
|
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelScrollState
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelTab
|
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelTab
|
||||||
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelTitleBarState
|
import kr.co.vividnext.sodalive.v2.creator.channel.model.CreatorChannelTitleBarState
|
||||||
|
import kr.co.vividnext.sodalive.v2.creator.channel.series.CreatorChannelSeriesFragment
|
||||||
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
import kr.co.vividnext.sodalive.v2.main.MainV2Activity
|
||||||
import kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRoomActivity
|
import kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRoomActivity
|
||||||
import kr.co.vividnext.sodalive.splash.SplashActivity
|
import kr.co.vividnext.sodalive.splash.SplashActivity
|
||||||
@@ -70,7 +71,8 @@ class CreatorChannelActivity :
|
|||||||
BaseActivity<ActivityCreatorChannelBinding>(ActivityCreatorChannelBinding::inflate),
|
BaseActivity<ActivityCreatorChannelBinding>(ActivityCreatorChannelBinding::inflate),
|
||||||
CreatorChannelHomeFragment.Host,
|
CreatorChannelHomeFragment.Host,
|
||||||
CreatorChannelLiveFragment.Host,
|
CreatorChannelLiveFragment.Host,
|
||||||
CreatorChannelAudioFragment.Host {
|
CreatorChannelAudioFragment.Host,
|
||||||
|
CreatorChannelSeriesFragment.Host {
|
||||||
|
|
||||||
private val liveViewModel: LiveViewModel by inject()
|
private val liveViewModel: LiveViewModel by inject()
|
||||||
private val myPageViewModel: MyPageViewModel by inject()
|
private val myPageViewModel: MyPageViewModel by inject()
|
||||||
@@ -402,6 +404,9 @@ class CreatorChannelActivity :
|
|||||||
CreatorChannelTab.Audio.ordinal -> binding.viewPager.post {
|
CreatorChannelTab.Audio.ordinal -> binding.viewPager.post {
|
||||||
findAudioFragment()?.onCreatorChannelAudioTabSelected()
|
findAudioFragment()?.onCreatorChannelAudioTabSelected()
|
||||||
}
|
}
|
||||||
|
CreatorChannelTab.Series.ordinal -> binding.viewPager.post {
|
||||||
|
findSeriesFragment()?.onCreatorChannelSeriesTabSelected()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -420,6 +425,11 @@ class CreatorChannelActivity :
|
|||||||
findAudioFragment()?.onCreatorChannelAudioTabSelected()
|
findAudioFragment()?.onCreatorChannelAudioTabSelected()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (binding.viewPager.currentItem == CreatorChannelTab.Series.ordinal) {
|
||||||
|
binding.viewPager.post {
|
||||||
|
findSeriesFragment()?.onCreatorChannelSeriesTabSelected()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreatorChannelFollowProgressChanged(inProgress: Boolean) {
|
override fun onCreatorChannelFollowProgressChanged(inProgress: Boolean) {
|
||||||
@@ -471,6 +481,20 @@ class CreatorChannelActivity :
|
|||||||
postCheckCreatorChannelCurrentTabNeedsMore()
|
postCheckCreatorChannelCurrentTabNeedsMore()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreatorChannelSeriesClicked(seriesId: Long) {
|
||||||
|
startActivity(
|
||||||
|
Intent(this, SeriesDetailActivity::class.java).apply {
|
||||||
|
putExtra(Constants.EXTRA_SERIES_ID, seriesId)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreatorChannelSeriesContentChanged() {
|
||||||
|
updateCreatorChannelTabViewportHeight()
|
||||||
|
updateViewPagerHeight()
|
||||||
|
postCheckCreatorChannelCurrentTabNeedsMore()
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupOwnerFabInsets() {
|
private fun setupOwnerFabInsets() {
|
||||||
binding.viewPager.updatePadding(bottom = OWNER_FAB_CONTENT_BOTTOM_PADDING_DP.dpToPx().toInt())
|
binding.viewPager.updatePadding(bottom = OWNER_FAB_CONTENT_BOTTOM_PADDING_DP.dpToPx().toInt())
|
||||||
}
|
}
|
||||||
@@ -646,15 +670,23 @@ class CreatorChannelActivity :
|
|||||||
return supportFragmentManager.findFragmentByTag(fragmentTag) as? CreatorChannelAudioFragment
|
return supportFragmentManager.findFragmentByTag(fragmentTag) as? CreatorChannelAudioFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun findSeriesFragment(): CreatorChannelSeriesFragment? {
|
||||||
|
val fragmentTag = "f${CreatorChannelTab.Series.ordinal}"
|
||||||
|
return supportFragmentManager.findFragmentByTag(fragmentTag) as? CreatorChannelSeriesFragment
|
||||||
|
}
|
||||||
|
|
||||||
private fun notifyCurrentCreatorChannelTabScrolledToBottom() {
|
private fun notifyCurrentCreatorChannelTabScrolledToBottom() {
|
||||||
when (binding.viewPager.currentItem) {
|
when (binding.viewPager.currentItem) {
|
||||||
CreatorChannelTab.Live.ordinal -> findLiveFragment()?.onCreatorChannelLiveScrolledToBottom()
|
CreatorChannelTab.Live.ordinal -> findLiveFragment()?.onCreatorChannelLiveScrolledToBottom()
|
||||||
CreatorChannelTab.Audio.ordinal -> findAudioFragment()?.onCreatorChannelAudioScrolledToBottom()
|
CreatorChannelTab.Audio.ordinal -> findAudioFragment()?.onCreatorChannelAudioScrolledToBottom()
|
||||||
|
CreatorChannelTab.Series.ordinal -> findSeriesFragment()?.onCreatorChannelSeriesScrolledToBottom()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isCreatorChannelLoadMoreTab(position: Int): Boolean {
|
private fun isCreatorChannelLoadMoreTab(position: Int): Boolean {
|
||||||
return position == CreatorChannelTab.Live.ordinal || position == CreatorChannelTab.Audio.ordinal
|
return position == CreatorChannelTab.Live.ordinal ||
|
||||||
|
position == CreatorChannelTab.Audio.ordinal ||
|
||||||
|
position == CreatorChannelTab.Series.ordinal
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ensureLoginAndAdultAuth(isAdult: Boolean, onAuthed: () -> Unit) {
|
private fun ensureLoginAndAdultAuth(isAdult: Boolean, onAuthed: () -> Unit) {
|
||||||
@@ -746,6 +778,7 @@ class CreatorChannelActivity :
|
|||||||
when (binding.viewPager.currentItem) {
|
when (binding.viewPager.currentItem) {
|
||||||
CreatorChannelTab.Live.ordinal -> findLiveFragment()?.onCreatorChannelLiveViewportHeightChanged(minHeight)
|
CreatorChannelTab.Live.ordinal -> findLiveFragment()?.onCreatorChannelLiveViewportHeightChanged(minHeight)
|
||||||
CreatorChannelTab.Audio.ordinal -> findAudioFragment()?.onCreatorChannelAudioViewportHeightChanged(minHeight)
|
CreatorChannelTab.Audio.ordinal -> findAudioFragment()?.onCreatorChannelAudioViewportHeightChanged(minHeight)
|
||||||
|
CreatorChannelTab.Series.ordinal -> findSeriesFragment()?.onCreatorChannelSeriesViewportHeightChanged(minHeight)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -415,12 +415,31 @@ class CreatorChannelActivitySourceTest {
|
|||||||
|
|
||||||
assertFalse(source.contains("if (tab != CreatorChannelTab.Home) return"))
|
assertFalse(source.contains("if (tab != CreatorChannelTab.Home) return"))
|
||||||
assertTrue(pagerAdapter.contains("CreatorChannelTab.Audio -> CreatorChannelAudioFragment.newInstance(creatorId)"))
|
assertTrue(pagerAdapter.contains("CreatorChannelTab.Audio -> CreatorChannelAudioFragment.newInstance(creatorId)"))
|
||||||
assertFalse(source.contains("CreatorChannelTab.Series ->"))
|
assertTrue(pagerAdapter.contains("CreatorChannelTab.Series -> CreatorChannelSeriesFragment.newInstance(creatorId)"))
|
||||||
assertFalse(source.contains("CreatorChannelTab.Community ->"))
|
assertFalse(source.contains("CreatorChannelTab.Community ->"))
|
||||||
assertFalse(source.contains("CreatorChannelTab.FanTalk ->"))
|
assertFalse(source.contains("CreatorChannelTab.FanTalk ->"))
|
||||||
assertFalse(source.contains("CreatorChannelTab.Donation ->"))
|
assertFalse(source.contains("CreatorChannelTab.Donation ->"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `Series tab source는 Fragment Host pagination height navigation을 Activity에 연결한다`() {
|
||||||
|
val source = projectFile(
|
||||||
|
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
|
||||||
|
).readText()
|
||||||
|
|
||||||
|
assertTrue(source.contains("CreatorChannelSeriesFragment.Host"))
|
||||||
|
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.creator.channel.series.CreatorChannelSeriesFragment"))
|
||||||
|
assertTrue(source.contains("findSeriesFragment()?.onCreatorChannelSeriesTabSelected()"))
|
||||||
|
assertTrue(source.contains("if (binding.viewPager.currentItem == CreatorChannelTab.Series.ordinal)"))
|
||||||
|
assertTrue(source.contains("private fun findSeriesFragment(): CreatorChannelSeriesFragment?"))
|
||||||
|
assertTrue(source.contains("findSeriesFragment()?.onCreatorChannelSeriesScrolledToBottom()"))
|
||||||
|
assertTrue(source.contains("position == CreatorChannelTab.Series.ordinal"))
|
||||||
|
assertTrue(source.contains("findSeriesFragment()?.onCreatorChannelSeriesViewportHeightChanged(minHeight)"))
|
||||||
|
assertTrue(source.contains("override fun onCreatorChannelSeriesContentChanged()"))
|
||||||
|
assertTrue(source.contains("override fun onCreatorChannelSeriesClicked(seriesId: Long)"))
|
||||||
|
assertTrue(source.contains("putExtra(Constants.EXTRA_SERIES_ID, seriesId)"))
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `section adapter source는 활동 지표를 행 단위 resource label로 표시한다`() {
|
fun `section adapter source는 활동 지표를 행 단위 resource label로 표시한다`() {
|
||||||
val adapter = projectFile(
|
val adapter = projectFile(
|
||||||
|
|||||||
Reference in New Issue
Block a user