feat(creator): 후원 empty 액션을 연결한다
This commit is contained in:
@@ -71,6 +71,11 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
viewModel.postChannelDonation(can, isSecret, message)
|
viewModel.postChannelDonation(can, isSecret, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
btnCreatorChannelDonationEmptyWrite.setOnClickListener {
|
||||||
|
host.onCreatorChannelDonationRequested { can, isSecret, message ->
|
||||||
|
viewModel.postChannelDonation(can, isSecret, message)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun observeViewModel() {
|
private fun observeViewModel() {
|
||||||
@@ -81,6 +86,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
is CreatorChannelDonationUiState.Error -> bindError(state)
|
is CreatorChannelDonationUiState.Error -> bindError(state)
|
||||||
is CreatorChannelDonationUiState.Content -> bindContent(state)
|
is CreatorChannelDonationUiState.Content -> bindContent(state)
|
||||||
}
|
}
|
||||||
|
handleActionToastMessage(state)
|
||||||
handleDonationSuccessEvent()
|
handleDonationSuccessEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,6 +96,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||||
rvCreatorChannelDonation.isVisible = false
|
rvCreatorChannelDonation.isVisible = false
|
||||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||||
|
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||||
tvCreatorChannelDonationErrorMessage.isVisible = false
|
tvCreatorChannelDonationErrorMessage.isVisible = false
|
||||||
btnCreatorChannelDonationRetry.isVisible = false
|
btnCreatorChannelDonationRetry.isVisible = false
|
||||||
btnCreatorChannelDonationWrite.isVisible = false
|
btnCreatorChannelDonationWrite.isVisible = false
|
||||||
@@ -100,6 +107,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||||
rvCreatorChannelDonation.isVisible = false
|
rvCreatorChannelDonation.isVisible = false
|
||||||
layoutCreatorChannelDonationEmpty.isVisible = true
|
layoutCreatorChannelDonationEmpty.isVisible = true
|
||||||
|
btnCreatorChannelDonationEmptyWrite.isVisible = !state.isOwner
|
||||||
tvCreatorChannelDonationEmptyMessage.setText(
|
tvCreatorChannelDonationEmptyMessage.setText(
|
||||||
if (state.isOwner) {
|
if (state.isOwner) {
|
||||||
R.string.creator_channel_donation_empty_owner_title
|
R.string.creator_channel_donation_empty_owner_title
|
||||||
@@ -118,6 +126,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
layoutCreatorChannelDonationCountBar.isVisible = false
|
layoutCreatorChannelDonationCountBar.isVisible = false
|
||||||
rvCreatorChannelDonation.isVisible = false
|
rvCreatorChannelDonation.isVisible = false
|
||||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||||
|
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||||
tvCreatorChannelDonationErrorMessage.isVisible = true
|
tvCreatorChannelDonationErrorMessage.isVisible = true
|
||||||
tvCreatorChannelDonationErrorMessage.text = state.message ?: getString(R.string.creator_channel_donation_error_message)
|
tvCreatorChannelDonationErrorMessage.text = state.message ?: getString(R.string.creator_channel_donation_error_message)
|
||||||
btnCreatorChannelDonationRetry.isVisible = true
|
btnCreatorChannelDonationRetry.isVisible = true
|
||||||
@@ -131,6 +140,7 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
rvCreatorChannelDonation.isVisible = true
|
rvCreatorChannelDonation.isVisible = true
|
||||||
donationAdapter.submitItems(state.rankings, state.donations)
|
donationAdapter.submitItems(state.rankings, state.donations)
|
||||||
layoutCreatorChannelDonationEmpty.isVisible = false
|
layoutCreatorChannelDonationEmpty.isVisible = false
|
||||||
|
btnCreatorChannelDonationEmptyWrite.isVisible = false
|
||||||
tvCreatorChannelDonationErrorMessage.isVisible = false
|
tvCreatorChannelDonationErrorMessage.isVisible = false
|
||||||
btnCreatorChannelDonationRetry.isVisible = false
|
btnCreatorChannelDonationRetry.isVisible = false
|
||||||
btnCreatorChannelDonationWrite.isVisible = !state.isOwner
|
btnCreatorChannelDonationWrite.isVisible = !state.isOwner
|
||||||
@@ -139,10 +149,17 @@ class CreatorChannelDonationFragment : BaseFragment<FragmentCreatorChannelDonati
|
|||||||
Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show()
|
Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show()
|
||||||
viewModel.consumePaginationErrorMessage()
|
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() {
|
private fun handleDonationSuccessEvent() {
|
||||||
|
|||||||
@@ -45,6 +45,19 @@ class CreatorChannelDonationActionTest {
|
|||||||
assertTrue(fragment.contains("host.onCreatorChannelDonationCompleted()"))
|
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
|
@Test
|
||||||
fun `후원 fragment source는 성공 이벤트를 content 상태와 독립적으로 전달한다`() {
|
fun `후원 fragment source는 성공 이벤트를 content 상태와 독립적으로 전달한다`() {
|
||||||
val fragment = projectFile(
|
val fragment = projectFile(
|
||||||
|
|||||||
Reference in New Issue
Block a user