From 6ec9a0f2b27f6266fd4dee040b8ac37bdb5cb73f Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 4 Jan 2021 14:54:42 -0300 Subject: [PATCH] Show warning dialog when auto-delete timer has changed since starting to compose message --- .../view/TextAttachmentController.java | 1 + .../android/view/TextSendController.java | 34 +++++++++++++++++++ briar-android/src/main/res/values/strings.xml | 4 +++ 3 files changed, 39 insertions(+) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java index 5c016ba39..3f2bce0b6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java @@ -174,6 +174,7 @@ public class TextAttachmentController extends TextSendController private void onNewUris(boolean restart, List newUris) { if (newUris.isEmpty()) return; if (loadingUris) throw new AssertionError(); + if (textIsEmpty) onStartingMessage(); loadingUris = true; if (newUris.size() > MAX_ATTACHMENTS_PER_MESSAGE) { newUris = newUris.subList(0, MAX_ATTACHMENTS_PER_MESSAGE); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java index 3d471f688..848c4bbb4 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java @@ -16,6 +16,7 @@ import java.util.List; import androidx.annotation.CallSuper; import androidx.annotation.Nullable; import androidx.annotation.UiThread; +import androidx.appcompat.app.AlertDialog; import static com.google.android.material.snackbar.Snackbar.LENGTH_SHORT; import static java.util.Collections.emptyList; @@ -32,6 +33,7 @@ public class TextSendController implements TextInputListener { protected boolean textIsEmpty = true; private boolean ready = true; private long currentTimer = NO_AUTO_DELETE_TIMER; + private long expectedTimer = NO_AUTO_DELETE_TIMER; private final CharSequence defaultHint; private final boolean allowEmptyText; @@ -49,6 +51,7 @@ public class TextSendController implements TextInputListener { @Override public void onTextIsEmptyChanged(boolean isEmpty) { textIsEmpty = isEmpty; + if (!isEmpty) onStartingMessage(); updateViewState(); } @@ -59,6 +62,15 @@ public class TextSendController implements TextInputListener { } } + /** + * Call whenever the user starts a new message, + * either by entering text or adding an attachment. + * This updates the expected auto-delete timer to the current value. + */ + protected void onStartingMessage() { + expectedTimer = currentTimer; + } + public void setReady(boolean ready) { this.ready = ready; updateViewState(); @@ -111,6 +123,11 @@ public class TextSendController implements TextInputListener { LENGTH_SHORT).show(); return false; } + if (expectedTimer != currentTimer) { + boolean enabled = currentTimer != NO_AUTO_DELETE_TIMER; + showTimerChangedDialog(enabled); + return false; + } return ready && (canSendEmptyText() || !textIsEmpty); } @@ -118,6 +135,23 @@ public class TextSendController implements TextInputListener { return allowEmptyText; } + private void showTimerChangedDialog(boolean enabled) { + Context ctx = textInput.getContext(); + int message = + enabled ? R.string.auto_delete_changed_warning_message_enabled : + R.string.auto_delete_changed_warning_message_disabled; + new AlertDialog.Builder(ctx, R.style.BriarDialogTheme) + .setTitle(R.string.auto_delete_changed_warning_title) + .setMessage(message) + .setPositiveButton(R.string.auto_delete_changed_warning_send, + (dialog, which) -> { + expectedTimer = currentTimer; + onSendEvent(); + }) + .setNegativeButton(R.string.cancel, null) + .show(); + } + @Nullable public Parcelable onSaveInstanceState(@Nullable Parcelable superState) { return superState; diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 81f154246..54e271cfb 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -176,6 +176,10 @@ %1$s\'s messages will not disappear. %2$s Tap to learn more. + Disappearing messages changed + Since you started composing your message, disappearing messages have been enabled. + Since you started composing your message, disappearing messages have been disabled. + Send anyway Delete all messages Confirm Message Deletion Are you sure that you want to delete all messages?