fix(channel): 탭 전환 자동 스크롤을 제거한다
This commit is contained in:
@@ -100,7 +100,6 @@ class CreatorChannelActivity :
|
|||||||
private var statusBarHeight: Int = 0
|
private var statusBarHeight: Int = 0
|
||||||
private var tabLayoutMediator: TabLayoutMediator? = null
|
private var tabLayoutMediator: TabLayoutMediator? = null
|
||||||
private var pageChangeCallback: ViewPager2.OnPageChangeCallback? = null
|
private var pageChangeCallback: ViewPager2.OnPageChangeCallback? = null
|
||||||
private var lastSelectedCreatorChannelTabPosition: Int? = null
|
|
||||||
private var isOwnerFabExpanded: Boolean = false
|
private var isOwnerFabExpanded: Boolean = false
|
||||||
private var isOwnerFabAnimating: Boolean = false
|
private var isOwnerFabAnimating: Boolean = false
|
||||||
private var isDonationFloatingButtonVisible: Boolean = false
|
private var isDonationFloatingButtonVisible: Boolean = false
|
||||||
@@ -343,17 +342,6 @@ class CreatorChannelActivity :
|
|||||||
binding.tvTitleNickname.isVisible = shouldUseBlackTitleBar
|
binding.tvTitleNickname.isVisible = shouldUseBlackTitleBar
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun adjustCreatorChannelStickyAnchorOnTabSelected(position: Int) {
|
|
||||||
val previousPosition = lastSelectedCreatorChannelTabPosition
|
|
||||||
lastSelectedCreatorChannelTabPosition = position
|
|
||||||
if (previousPosition == null || previousPosition == position) return
|
|
||||||
|
|
||||||
val stickyScrollY = calculateCreatorChannelStickyScrollY()
|
|
||||||
if (binding.nestedScrollView.scrollY < stickyScrollY) {
|
|
||||||
binding.nestedScrollView.scrollTo(0, stickyScrollY)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun calculateCreatorChannelStickyScrollY(): Int {
|
private fun calculateCreatorChannelStickyScrollY(): Int {
|
||||||
val stickyTop = CreatorChannelScrollState.calculateStickyTop(statusBarHeight, baseTitleBarHeight)
|
val stickyTop = CreatorChannelScrollState.calculateStickyTop(statusBarHeight, baseTitleBarHeight)
|
||||||
return (binding.headerContainer.height - stickyTop).coerceAtLeast(0)
|
return (binding.headerContainer.height - stickyTop).coerceAtLeast(0)
|
||||||
@@ -415,10 +403,8 @@ class CreatorChannelActivity :
|
|||||||
}.also {
|
}.also {
|
||||||
it.attach()
|
it.attach()
|
||||||
}
|
}
|
||||||
lastSelectedCreatorChannelTabPosition = binding.viewPager.currentItem
|
|
||||||
val callback = object : ViewPager2.OnPageChangeCallback() {
|
val callback = object : ViewPager2.OnPageChangeCallback() {
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
adjustCreatorChannelStickyAnchorOnTabSelected(position)
|
|
||||||
if (position != CreatorChannelTab.Home.ordinal) {
|
if (position != CreatorChannelTab.Home.ordinal) {
|
||||||
collapseOwnerFab(animate = false)
|
collapseOwnerFab(animate = false)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1156,24 +1156,27 @@ class CreatorChannelActivitySourceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `탭 전환은 sticky tabbar anchor 아래로 내려간 scroll 위치를 되돌리지 않고 부족할 때만 보정한다`() {
|
fun `탭 전환은 공통 scroll 위치를 자동 보정하지 않는다`() {
|
||||||
val source = projectFile(
|
val source = projectFile(
|
||||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
|
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
|
||||||
).readText()
|
).readText()
|
||||||
|
|
||||||
assertTrue(source.contains("private var lastSelectedCreatorChannelTabPosition: Int? = null"))
|
assertFalse(source.contains("private var lastSelectedCreatorChannelTabPosition: Int? = null"))
|
||||||
assertTrue(source.contains("lastSelectedCreatorChannelTabPosition = binding.viewPager.currentItem"))
|
assertFalse(source.contains("lastSelectedCreatorChannelTabPosition = binding.viewPager.currentItem"))
|
||||||
assertTrue(source.contains("lastSelectedCreatorChannelTabPosition = position"))
|
assertFalse(source.contains("lastSelectedCreatorChannelTabPosition = position"))
|
||||||
assertTrue(source.contains("adjustCreatorChannelStickyAnchorOnTabSelected(position)"))
|
assertFalse(source.contains("adjustCreatorChannelStickyAnchorOnTabSelected(position)"))
|
||||||
assertTrue(source.contains("private fun adjustCreatorChannelStickyAnchorOnTabSelected(position: Int)"))
|
assertFalse(source.contains("private fun adjustCreatorChannelStickyAnchorOnTabSelected(position: Int)"))
|
||||||
assertTrue(source.contains("val previousPosition = lastSelectedCreatorChannelTabPosition"))
|
assertFalse(source.contains("val previousPosition = lastSelectedCreatorChannelTabPosition"))
|
||||||
assertTrue(source.contains("if (previousPosition == null || previousPosition == position)"))
|
assertFalse(source.contains("binding.nestedScrollView.scrollTo(0, stickyScrollY)"))
|
||||||
assertTrue(source.contains("val stickyScrollY = calculateCreatorChannelStickyScrollY()"))
|
assertFalse(source.contains("binding.nestedScrollView.smoothScrollTo(0, stickyScrollY)"))
|
||||||
assertTrue(source.contains("if (binding.nestedScrollView.scrollY < stickyScrollY)"))
|
|
||||||
assertTrue(source.contains("binding.nestedScrollView.scrollTo(0, stickyScrollY)"))
|
|
||||||
assertTrue(source.contains("private fun calculateCreatorChannelStickyScrollY(): Int"))
|
assertTrue(source.contains("private fun calculateCreatorChannelStickyScrollY(): Int"))
|
||||||
assertTrue(source.contains("CreatorChannelScrollState.calculateStickyTop(statusBarHeight, baseTitleBarHeight)"))
|
assertTrue(source.contains("CreatorChannelScrollState.calculateStickyTop(statusBarHeight, baseTitleBarHeight)"))
|
||||||
assertTrue(source.contains("return (binding.headerContainer.height - stickyTop).coerceAtLeast(0)"))
|
assertTrue(source.contains("return (binding.headerContainer.height - stickyTop).coerceAtLeast(0)"))
|
||||||
|
assertTrue(source.contains("updateOwnerFabVisibility()"))
|
||||||
|
assertTrue(source.contains("updateDonationFloatingButtonVisibility()"))
|
||||||
|
assertTrue(source.contains("updateOwnerCtaVisibility()"))
|
||||||
|
assertTrue(source.contains("updateCreatorChannelTabViewportHeight()"))
|
||||||
|
assertTrue(source.contains("updateViewPagerHeight()"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user