From 97dd9b901d00aa895c315a6eb091f0166a592798 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 22 Oct 2019 11:38:10 -0300 Subject: [PATCH] [android] hook up UI to ConversationManager to actually delete messages --- .../conversation/ConversationActivity.java | 26 ++++++++++++++----- briar-android/src/main/res/values/strings.xml | 2 +- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java index 2e2c4533a..10e9e6be1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java @@ -7,7 +7,6 @@ import android.os.Bundle; import android.os.Parcelable; import android.transition.Slide; import android.transition.Transition; -import android.util.Log; import android.util.SparseArray; import android.view.ActionMode; import android.view.Menu; @@ -113,7 +112,6 @@ import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt; import static android.os.Build.VERSION.SDK_INT; import static android.view.Gravity.RIGHT; -import static android.widget.Toast.LENGTH_LONG; import static android.widget.Toast.LENGTH_SHORT; import static androidx.core.app.ActivityOptionsCompat.makeSceneTransitionAnimation; import static androidx.core.view.ViewCompat.setTransitionName; @@ -442,8 +440,7 @@ public class ConversationActivity extends BriarActivity @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item.getItemId() == R.id.action_delete) { - Log.e("TEST", "selected: " + getSelection()); - Toast.makeText(this, "Not yet implemented", LENGTH_LONG).show(); + deleteSelectedMessages(); return true; } return false; @@ -862,7 +859,7 @@ public class ConversationActivity extends BriarActivity try { boolean allDeleted = conversationManager.deleteAllMessages(contactId); - reloadConversationAfterDeletingAllMessages(allDeleted); + reloadConversationAfterDeletingMessages(allDeleted); } catch (DbException e) { logException(LOG, WARNING, e); runOnUiThreadUnlessDestroyed(() -> list.showData()); @@ -870,7 +867,24 @@ public class ConversationActivity extends BriarActivity }); } - private void reloadConversationAfterDeletingAllMessages( + private void deleteSelectedMessages() { + list.showProgressBar(); + Collection selected = getSelection(); + // close action mode only after getting the selection + if (actionMode != null) actionMode.finish(); + runOnDbThread(() -> { + try { + boolean allDeleted = + conversationManager.deleteMessages(contactId, selected); + reloadConversationAfterDeletingMessages(allDeleted); + } catch (DbException e) { + logException(LOG, WARNING, e); + runOnUiThreadUnlessDestroyed(() -> list.showData()); + } + }); + } + + private void reloadConversationAfterDeletingMessages( boolean allDeleted) { runOnUiThreadUnlessDestroyed(() -> { adapter.clear(); diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 5e32aaa6c..61c21bdd6 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -139,7 +139,7 @@ Confirm Message Deletion Are you sure that you want to delete all messages? Could not delete all messages - Messages related to ongoing introductions or invitations cannot be deleted until they conclude. + Messages related to\n\n• ongoing introductions\n• ongoing (blog/forum/group) invitations\n• partly downloaded messages\n\ncannot be deleted until they conclude. Delete contact Confirm Contact Deletion Are you sure that you want to remove this contact and all messages exchanged with this contact?