From f46d2d28f509e15ced95104bd40859ab0affe2ff Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 20 Jul 2022 17:26:26 +0200 Subject: [PATCH] close dialog when voted for hidden poll Signed-off-by: Marcel Hibbe --- .../talk/polls/ui/PollMainDialogFragment.kt | 10 +++------- .../com/nextcloud/talk/polls/ui/PollVoteFragment.kt | 8 ++++---- .../talk/polls/viewmodels/PollMainViewModel.kt | 13 ++++++------- .../talk/polls/viewmodels/PollVoteViewModel.kt | 9 +++++++-- app/src/main/res/layout/dialog_poll_main.xml | 10 ---------- app/src/main/res/values/strings.xml | 2 +- 6 files changed, 21 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt index 35af29b2e..c432ff9bd 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollMainDialogFragment.kt @@ -85,21 +85,17 @@ class PollMainDialogFragment : DialogFragment() { viewModel.viewState.observe(viewLifecycleOwner) { state -> when (state) { PollMainViewModel.InitialState -> {} - is PollMainViewModel.PollVoteHiddenState -> { - binding.pollVotedHidden.visibility = View.VISIBLE - initVotersAmount(state.showVotersAmount, state.poll.numVoters, false) - showVoteScreen() - } is PollMainViewModel.PollVoteState -> { - binding.pollVotedHidden.visibility = View.GONE initVotersAmount(state.showVotersAmount, state.poll.numVoters, false) showVoteScreen() } is PollMainViewModel.PollResultState -> { - binding.pollVotedHidden.visibility = View.GONE initVotersAmount(state.showVotersAmount, state.poll.numVoters, true) showResultsScreen() } + is PollMainViewModel.DismissDialogState -> { + dismiss() + } else -> {} } } diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt index 32688f97c..e8286de1c 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollVoteFragment.kt @@ -80,10 +80,6 @@ class PollVoteFragment : Fragment() { initEndPollButton(state.showEndPollButton) updateSubmitButton() updateDismissEditButton(state.showDismissEditButton) - } else if (state is PollMainViewModel.PollVoteHiddenState) { - initPollOptions(state.poll) - initEndPollButton(state.showEndPollButton) - updateSubmitButton() } } @@ -94,6 +90,10 @@ class PollVoteFragment : Fragment() { Log.e(TAG, "Failed to vote on poll.") Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show() } + is PollVoteViewModel.PollVoteHiddenSuccessState -> { + Toast.makeText(context, R.string.polls_voted_hidden_success, Toast.LENGTH_LONG).show() + parentViewModel.dismissDialog() + } is PollVoteViewModel.PollVoteSuccessState -> { parentViewModel.voted() } diff --git a/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollMainViewModel.kt b/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollMainViewModel.kt index 48534eeb4..d5fdbf308 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollMainViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollMainViewModel.kt @@ -49,6 +49,7 @@ class PollMainViewModel @Inject constructor(private val repository: PollReposito sealed interface ViewState object InitialState : ViewState + object DismissDialogState : ViewState open class PollVoteState( val poll: Poll, val showVotersAmount: Boolean, @@ -56,12 +57,6 @@ class PollMainViewModel @Inject constructor(private val repository: PollReposito val showDismissEditButton: Boolean ) : ViewState - open class PollVoteHiddenState( - val poll: Poll, - val showVotersAmount: Boolean, - val showEndPollButton: Boolean - ) : ViewState - open class PollResultState( val poll: Poll, val showVotersAmount: Boolean, @@ -138,7 +133,7 @@ class PollMainViewModel @Inject constructor(private val repository: PollReposito val showVotersAmount = showVotersAmount(poll) if (votedForOpenHiddenPoll(poll)) { - _viewState.value = PollVoteHiddenState(poll, showVotersAmount, showEndPollButton) + _viewState.value = PollVoteState(poll, showVotersAmount, showEndPollButton, false) } else if (editVotes && poll.status == Poll.STATUS_OPEN) { _viewState.value = PollVoteState(poll, false, showEndPollButton, true) editVotes = false @@ -179,6 +174,10 @@ class PollMainViewModel @Inject constructor(private val repository: PollReposito return userUtils.currentUser?.userId == poll.actorId } + fun dismissDialog() { + _viewState.value = DismissDialogState + } + companion object { private val TAG = PollMainViewModel::class.java.simpleName } diff --git a/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollVoteViewModel.kt b/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollVoteViewModel.kt index 344915e65..a13ea3639 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollVoteViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/viewmodels/PollVoteViewModel.kt @@ -38,7 +38,8 @@ class PollVoteViewModel @Inject constructor(private val repository: PollReposito sealed interface ViewState object InitialState : ViewState - open class PollVoteSuccessState(val poll: Poll) : ViewState + open class PollVoteSuccessState : ViewState + open class PollVoteHiddenSuccessState : ViewState open class PollVoteFailedState : ViewState private val _viewState: MutableLiveData = MutableLiveData(InitialState) @@ -116,7 +117,11 @@ class PollVoteViewModel @Inject constructor(private val repository: PollReposito } override fun onComplete() { - _viewState.value = PollVoteSuccessState(poll) + if (poll.resultMode == 1) { + _viewState.value = PollVoteHiddenSuccessState() + } else { + _viewState.value = PollVoteSuccessState() + } } } diff --git a/app/src/main/res/layout/dialog_poll_main.xml b/app/src/main/res/layout/dialog_poll_main.xml index 70f40d028..d583b2905 100644 --- a/app/src/main/res/layout/dialog_poll_main.xml +++ b/app/src/main/res/layout/dialog_poll_main.xml @@ -85,16 +85,6 @@ - - - - Tap to see results %1$s votes Add option - You successfully voted for this private poll. Edit vote Vote + Successfully voted End poll Do you really want to end this poll? This can\'t be undone. You can\'t vote with more options for this poll.