From b3041ab6e01b2361a1a7cb265229494c922879d6 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 21 Jun 2021 14:27:28 -0300 Subject: [PATCH] Always update ViewOnceState before rendering hud. --- .../mediasend/MediaSendViewModel.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java index ac85672c9..6ab817160 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java @@ -236,12 +236,8 @@ class MediaSendViewModel extends ViewModel { captionVisible = getSelectedMediaOrDefault().size() > 1 || (getSelectedMediaOrDefault().size() > 0 && getSelectedMediaOrDefault().get(0).getCaption().isPresent()); buttonState = (recipient != null) ? ButtonState.SEND : ButtonState.CONTINUE; - if (viewOnceState == ViewOnceState.GONE && viewOnceSupported()) { - viewOnceState = ViewOnceState.DISABLED; - showViewOnceTooltipIfNecessary(viewOnceState); - } else if (!viewOnceSupported()) { - viewOnceState = ViewOnceState.GONE; - } + updateViewOnceState(); + showViewOnceTooltipIfNecessary(viewOnceState); railState = !isSms && viewOnceState != ViewOnceState.ENABLED ? RailState.INTERACTIVE : RailState.GONE; composeVisible = viewOnceState != ViewOnceState.ENABLED; @@ -590,6 +586,15 @@ class MediaSendViewModel extends ViewModel { return mediaConstraints; } + private void updateViewOnceState() { + if (viewOnceState == ViewOnceState.GONE && viewOnceSupported()) { + showViewOnceTooltipIfNecessary(viewOnceState); + viewOnceState = ViewOnceState.DISABLED; + } else if (!viewOnceSupported()) { + viewOnceState = ViewOnceState.GONE; + } + } + private @NonNull List getSelectedMediaOrDefault() { return selectedMedia.getValue() == null ? Collections.emptyList() : selectedMedia.getValue(); @@ -613,6 +618,8 @@ class MediaSendViewModel extends ViewModel { ButtonState updatedButtonState = buttonState == ButtonState.COUNT && selectionCount == 0 ? ButtonState.GONE : buttonState; boolean updatedCaptionVisible = captionVisible && (selectedMedia.size() > 1 || (selectedMedia.size() > 0 && selectedMedia.get(0).getCaption().isPresent())); + updateViewOnceState(); + return new HudState(hudVisible, composeVisible, updatedCaptionVisible, selectionCount, updatedButtonState, railState, viewOnceState); }