From 933e118c36f852268f98e50ec662aa8d7d0a1c13 Mon Sep 17 00:00:00 2001 From: klaus Date: Mon, 22 Jun 2026 23:55:36 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator):=20=ED=9B=84=EC=9B=90=20empty=20?= =?UTF-8?q?=EB=9E=AD=ED=82=B9=20=EC=83=81=ED=83=9C=EB=A5=BC=20=EC=9C=A0?= =?UTF-8?q?=EC=A7=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channel/donation/CreatorChannelDonationViewModel.kt | 9 ++++++--- .../donation/CreatorChannelDonationViewModelTest.kt | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt index c992e8e4..89a33de3 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModel.kt @@ -151,10 +151,11 @@ class CreatorChannelDonationViewModel( val data = response.data if (response.success && data != null) { val donations = data.toDonationUiModels() + val rankings = data.toDonationRankingUiModels() _donationStateLiveData.value = if (donations.isEmpty() || data.donationCount == 0) { - CreatorChannelDonationUiState.Empty(data.donationCount, isOwner) + CreatorChannelDonationUiState.Empty(data.donationCount, rankings, isOwner) } else { - data.toContentState(donations) + data.toContentState(rankings, donations) } } else { _donationStateLiveData.value = CreatorChannelDonationUiState.Error(response.message) @@ -205,10 +206,11 @@ class CreatorChannelDonationViewModel( } private fun CreatorChannelDonationTabResponse.toContentState( + rankings: List, donations: List ) = CreatorChannelDonationUiState.Content( donationCount = donationCount, - rankings = toDonationRankingUiModels(), + rankings = rankings, donations = donations, page = page, size = size, @@ -234,6 +236,7 @@ sealed interface CreatorChannelDonationUiState { data object Loading : CreatorChannelDonationUiState data class Empty( val donationCount: Int, + val rankings: List, val isOwner: Boolean, val actionToastMessage: String? = null ) : CreatorChannelDonationUiState diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt index b4e4a08d..ee1c163e 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/donation/CreatorChannelDonationViewModelTest.kt @@ -20,7 +20,6 @@ import kr.co.vividnext.sodalive.v2.creator.channel.donation.data.CreatorChannelD import kr.co.vividnext.sodalive.v2.creator.channel.donation.data.MemberDonationRankingResponse import org.junit.After import org.junit.Assert.assertEquals -import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -80,15 +79,17 @@ class CreatorChannelDonationViewModelTest { val state = viewModel.donationStateLiveData.requireValue() as CreatorChannelDonationUiState.Empty assertEquals(0, state.donationCount) + assertEquals(listOf(10L), state.rankings.map { it.userId }) } @Test - fun `표시 가능한 donations가 없으면 Empty 상태가 된다`() { + fun `표시 가능한 donations가 없으면 랭킹을 유지한 Empty 상태가 된다`() { stubGetDonations(response = Single.just(ApiResponse(true, donationResponse(ids = emptyList()), null))) viewModel.loadDonations(100L, isOwner = false) - assertTrue(viewModel.donationStateLiveData.requireValue() is CreatorChannelDonationUiState.Empty) + val state = viewModel.donationStateLiveData.requireValue() as CreatorChannelDonationUiState.Empty + assertEquals(listOf(10L), state.rankings.map { it.userId }) } @Test