diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt index 00181137..cedb2daf 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt @@ -15,6 +15,9 @@ import kr.co.vividnext.sodalive.databinding.FragmentV2MainHomeBinding import kr.co.vividnext.sodalive.databinding.ViewSectionTitleBinding import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.CreatorCommunityAllActivity import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomActivity +import kr.co.vividnext.sodalive.home.pushnotification.PushNotificationListActivity +import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity +import kr.co.vividnext.sodalive.search.SearchActivity import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivity import kr.co.vividnext.sodalive.v2.live.onair.HomeOnAirLiveActivity import kr.co.vividnext.sodalive.v2.main.chat.dm.DmChatRoomActivity @@ -127,12 +130,31 @@ class HomeMainFragment : BaseFragment( setUpCreatorRankingAdapter() setUpFollowingAdapters() setUpBusinessInfo() + setupTitleBarActions() bindHomeRecommendationObservers() bindHomeCreatorRankingObservers() bindHomeFollowingObservers() homeRecommendationViewModel.loadRecommendations() } + private fun setupTitleBarActions() { + binding.viewHomeTitleBar.ivTitleBarCash.setOnClickListener { + openWithLoginGuard(CanChargeActivity::class.java) + } + binding.viewHomeTitleBar.ivTitleBarSearch.setOnClickListener { + openWithLoginGuard(SearchActivity::class.java) + } + binding.viewHomeTitleBar.ivTitleBarBell.setOnClickListener { + openWithLoginGuard(PushNotificationListActivity::class.java) + } + } + + private fun openWithLoginGuard(activityClass: Class<*>) { + ensureMainV2NavigationAllowed { + startActivity(Intent(requireContext(), activityClass)) + } + } + private fun setUpBusinessInfo() { val businessInfoText = binding.tvHomeBusinessInfo.text HomeBusinessInfoBinder.bind(binding.tvHomeBusinessInfo) diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainTitleBarActionSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainTitleBarActionSourceTest.kt new file mode 100644 index 00000000..45e57278 --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainTitleBarActionSourceTest.kt @@ -0,0 +1,29 @@ +package kr.co.vividnext.sodalive.v2.main.home + +import org.junit.Assert.assertTrue +import org.junit.Test +import java.io.File + +class HomeMainTitleBarActionSourceTest { + + @Test + fun `홈 title bar 우측 아이콘은 기존 목적지로 이동한다`() { + val source = projectFile( + "app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt" + ).readText() + + assertTrue(source.contains("viewHomeTitleBar.ivTitleBarCash.setOnClickListener")) + assertTrue(source.contains("viewHomeTitleBar.ivTitleBarSearch.setOnClickListener")) + assertTrue(source.contains("viewHomeTitleBar.ivTitleBarBell.setOnClickListener")) + assertTrue(source.contains("ensureMainV2NavigationAllowed")) + assertTrue(source.contains("CanChargeActivity::class.java")) + assertTrue(source.contains("SearchActivity::class.java")) + assertTrue(source.contains("PushNotificationListActivity::class.java")) + } + + private fun projectFile(relativePath: String): File { + val candidates = listOf(File(relativePath), File("../$relativePath")) + return candidates.firstOrNull { it.exists() } + ?: error("Project file not found: $relativePath") + } +}