feat(creator): 후원 empty 액션을 연결한다
This commit is contained in:
@@ -71,6 +71,11 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
viewModel.postChannelDonation(can, isSecret, message)
|
||||
}
|
||||
}
|
||||
btnCreatorChannelDonationEmptyWrite.setOnClickListener {
|
||||
host.onCreatorChannelDonationRequested { can, isSecret, message ->
|
||||
viewModel.postChannelDonation(can, isSecret, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun observeViewModel() {
|
||||
@@ -81,6 +86,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
is CreatorChannelDonationUiState.Error -> bindError(state)
|
||||
is CreatorChannelDonationUiState.Content -> bindContent(state)
|
||||
}
|
||||
handleActionToastMessage(state)
|
||||
handleDonationSuccessEvent()
|
||||
}
|
||||
}
|
||||
@@ -90,6 +96,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||
rvCreatorChannelDonation.isVisible = false
|
||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||
tvCreatorChannelDonationErrorMessage.isVisible = false
|
||||
btnCreatorChannelDonationRetry.isVisible = false
|
||||
btnCreatorChannelDonationWrite.isVisible = false
|
||||
@@ -100,6 +107,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||
rvCreatorChannelDonation.isVisible = false
|
||||
layoutCreatorChannelDonationEmpty.isVisible = true
|
||||
btnCreatorChannelDonationEmptyWrite.isVisible = !state.isOwner
|
||||
tvCreatorChannelDonationEmptyMessage.setText(
|
||||
if (state.isOwner) {
|
||||
R.string.creator_channel_donation_empty_owner_title
|
||||
@@ -118,6 +126,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||
rvCreatorChannelDonation.isVisible = false
|
||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||
tvCreatorChannelDonationErrorMessage.isVisible = true
|
||||
tvCreatorChannelDonationErrorMessage.text = state.message ?: getString(R.string.creator_channel_donation_error_message)
|
||||
btnCreatorChannelDonationRetry.isVisible = true
|
||||
@@ -131,6 +140,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
rvCreatorChannelDonation.isVisible = true
|
||||
donationAdapter.submitItems(state.rankings, state.donations)
|
||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||
tvCreatorChannelDonationErrorMessage.isVisible = false
|
||||
btnCreatorChannelDonationRetry.isVisible = false
|
||||
btnCreatorChannelDonationWrite.isVisible = !state.isOwner
|
||||
@@ -139,10 +149,17 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
||||
Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show()
|
||||
viewModel.consumePaginationErrorMessage()
|
||||
}
|
||||
state.actionToastMessage?.let {
|
||||
Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show()
|
||||
viewModel.consumeActionToastMessage()
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleActionToastMessage(state: CreatorChannelDonationUiState) {
|
||||
val message = when (state) {
|
||||
is CreatorChannelDonationUiState.Empty -> state.actionToastMessage
|
||||
is CreatorChannelDonationUiState.Content -> state.actionToastMessage
|
||||
else -> null
|
||||
} ?: return
|
||||
|
||||
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
|
||||
viewModel.consumeActionToastMessage()
|
||||
}
|
||||
|
||||
private fun handleDonationSuccessEvent() {
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user