From 4097181923af99832762abd5ba32c8a476f97a81 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 22 Jun 2026 22:06:52 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator):=20=ED=9B=84=EC=9B=90=20empty=20?= =?UTF-8?q?=EC=95=A1=EC=85=98=EC=9D=84=20=EC=97=B0=EA=B2=B0=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CreatorChannelDonationFragment.kt | 25 ++++++++++++++++--- .../CreatorChannelDonationActionTest.kt | 13 ++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationFragment.kt index 380c719a..f20a1a2d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationFragment.kt @@ -71,6 +71,11 @@ class CreatorChannelDonationFragment : BaseFragment + viewModel.postChannelDonation(can, isSecret, message) + } + } } private fun observeViewModel() { @@ -81,6 +86,7 @@ class CreatorChannelDonationFragment : BaseFragment bindError(state) is CreatorChannelDonationUiState.Content -> bindContent(state) } + handleActionToastMessage(state) handleDonationSuccessEvent() } } @@ -90,6 +96,7 @@ class CreatorChannelDonationFragment : BaseFragment state.actionToastMessage + is CreatorChannelDonationUiState.Content -> state.actionToastMessage + else -> null + } ?: return + + Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() + viewModel.consumeActionToastMessage() } private fun handleDonationSuccessEvent() { diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationActionTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationActionTest.kt index b538f5b6..cfd10348 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationActionTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationActionTest.kt @@ -45,6 +45,19 @@ class CreatorChannelDonationActionTest { assertTrue(fragment.contains("host.onCreatorChannelDonationCompleted()")) } + @Test + fun `후원 fragment source는 empty 중앙 button을 타인 채널에서만 표시하고 동일 후원 요청을 전달한다`() { + val fragment = projectFile( + "app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationFragment.kt" + ).readText() + + assertTrue(fragment.contains("btnCreatorChannelDonationEmptyWrite.setOnClickListener")) + assertTrue(fragment.contains("btnCreatorChannelDonationEmptyWrite.isVisible = !state.isOwner")) + assertTrue(fragment.contains("btnCreatorChannelDonationWrite.isVisible = false")) + assertTrue(fragment.contains("host.onCreatorChannelDonationRequested { can, isSecret, message ->")) + assertTrue(fragment.contains("viewModel.postChannelDonation(can, isSecret, message)")) + } + @Test fun `후원 fragment source는 성공 이벤트를 content 상태와 독립적으로 전달한다`() { val fragment = projectFile(