From 9d21d210edde37c7417d064efd76f1de040e3226 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 15 Oct 2021 07:35:48 +0200 Subject: [PATCH] Report new on compose is an experiment --- CHANGELOG.md | 4 +- FAQ.md | 17 ++-- app/src/main/assets/CHANGELOG.md | 4 +- .../java/eu/faircode/email/DaoMessage.java | 3 + .../eu/faircode/email/FragmentCompose.java | 87 ++++++++++--------- metadata/en-US/changelogs/1763.txt | 4 +- 6 files changed, 64 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3789fbf508..793602a299 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,13 @@ ### Next version * Added support for latin and roman numbered lists (view only) -* Report new messages in same thread when composing a new message +* Report new messages when composing a message [1] * Use account categories for identities * Small improvements and minor bug fixes * Updated translations +[1] This is an experiment which needs to be enabled in the miscellaneous settings. + ### 1.1763 * Small improvements and minor bug fixes diff --git a/FAQ.md b/FAQ.md index 9a5260fc3a..38f3051465 100644 --- a/FAQ.md +++ b/FAQ.md @@ -3303,14 +3303,6 @@ Reformatting and displaying such messages will take too long. You can try to use 🌎 [Google Translate](https://translate.google.com/translate?sl=en&&u=https://github.com/M66B/FairEmail/blob/master/FAQ.md%23user-content-faq125) -*Message classification (version 1.1438+)* - -Please see [this FAQ](#user-content-faq163) for details. - -Since this is an experimental feature, my advice is to start with just one folder. - -
- *Send hard bounce (version 1.1477+)* Send a [Delivery Status Notification](https://tools.ietf.org/html/rfc3464) (=hard bounce) via the reply/answer menu. @@ -3322,9 +3314,14 @@ For some background, see for [this Wikipedia article](https://en.wikipedia.org/w
-*Translate button (version 1.1600+)* +*Report new messages when composing a message* -Please see [this FAQ](#user-content-faq167) about how to configure DeepL. +A bottom notification will be shown if a new message arrives in the same conversation thread as a new message is being composed for. + +There will be a *show* button to show the conversation and from there you can tap on the draft message to continue editting. +The notification can be swiped away. + +This requires grouping of messages into conversations to be enabled.
diff --git a/app/src/main/assets/CHANGELOG.md b/app/src/main/assets/CHANGELOG.md index 3789fbf508..793602a299 100644 --- a/app/src/main/assets/CHANGELOG.md +++ b/app/src/main/assets/CHANGELOG.md @@ -7,11 +7,13 @@ ### Next version * Added support for latin and roman numbered lists (view only) -* Report new messages in same thread when composing a new message +* Report new messages when composing a message [1] * Use account categories for identities * Small improvements and minor bug fixes * Updated translations +[1] This is an experiment which needs to be enabled in the miscellaneous settings. + ### 1.1763 * Small improvements and minor bug fixes diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index bb7c76211a..f9ad2db845 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -281,6 +281,9 @@ public interface DaoMessage { " JOIN folder_view AS folder ON folder.id = message.folder" + " WHERE message.account = :account" + " AND message.thread = :thread" + + " AND folder.type <> '" + EntityFolder.DRAFTS + "'" + + " AND folder.type <> '" + EntityFolder.OUTBOX + "'" + + " AND folder.type <> '" + EntityFolder.SENT + "'" + " AND folder.type <> '" + EntityFolder.ARCHIVE + "'" + " AND NOT ui_seen" + " AND NOT ui_hide") diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 624a26088b..0d965d5091 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -5198,51 +5198,54 @@ public class FragmentCompose extends FragmentBase { } }); - db.message().liveUnreadThread(data.draft.account, data.draft.thread).observe(getViewLifecycleOwner(), new Observer>() { - private int lastDiff = 0; - private List base = null; + boolean experiments = prefs.getBoolean("experiments", false); + boolean threading = prefs.getBoolean("threading", true); + if (experiments && threading) + db.message().liveUnreadThread(data.draft.account, data.draft.thread).observe(getViewLifecycleOwner(), new Observer>() { + private int lastDiff = 0; + private List base = null; - @Override - public void onChanged(List messages) { - if (messages == null) - return; + @Override + public void onChanged(List messages) { + if (messages == null) + return; - if (base == null) { - base = messages; - return; + if (base == null) { + base = messages; + return; + } + + int diff = (messages.size() - base.size()); + if (diff > lastDiff) { + lastDiff = diff; + String msg = getResources().getQuantityString( + R.plurals.title_notification_unseen, diff, diff); + + Snackbar snackbar = Snackbar.make(view, msg, Snackbar.LENGTH_INDEFINITE) + .setGestureInsetBottomIgnored(true); + snackbar.setAction(R.string.title_show, new View.OnClickListener() { + @Override + public void onClick(View v) { + EntityMessage message = messages.get(0); + boolean notify_remove = prefs.getBoolean("notify_remove", true); + + Intent thread = new Intent(v.getContext(), ActivityView.class); + thread.setAction("thread:" + message.id); + thread.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + thread.putExtra("account", message.account); + thread.putExtra("folder", message.folder); + thread.putExtra("thread", message.thread); + thread.putExtra("filter_archive", true); + thread.putExtra("ignore", notify_remove); + + v.getContext().startActivity(thread); + getActivity().finish(); + } + }); + snackbar.show(); + } } - - int diff = (messages.size() - base.size()); - if (diff > lastDiff) { - lastDiff = diff; - String msg = getResources().getQuantityString( - R.plurals.title_notification_unseen, diff, diff); - - Snackbar snackbar = Snackbar.make(view, msg, Snackbar.LENGTH_INDEFINITE) - .setGestureInsetBottomIgnored(true); - snackbar.setAction(R.string.title_show, new View.OnClickListener() { - @Override - public void onClick(View v) { - EntityMessage message = messages.get(0); - boolean notify_remove = prefs.getBoolean("notify_remove", true); - - Intent thread = new Intent(v.getContext(), ActivityView.class); - thread.setAction("thread:" + message.id); - thread.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - thread.putExtra("account", message.account); - thread.putExtra("folder", message.folder); - thread.putExtra("thread", message.thread); - thread.putExtra("filter_archive", true); - thread.putExtra("ignore", notify_remove); - - v.getContext().startActivity(thread); - getActivity().finish(); - } - }); - snackbar.show(); - } - } - }); + }); } @Override diff --git a/metadata/en-US/changelogs/1763.txt b/metadata/en-US/changelogs/1763.txt index 3789fbf508..793602a299 100644 --- a/metadata/en-US/changelogs/1763.txt +++ b/metadata/en-US/changelogs/1763.txt @@ -7,11 +7,13 @@ ### Next version * Added support for latin and roman numbered lists (view only) -* Report new messages in same thread when composing a new message +* Report new messages when composing a message [1] * Use account categories for identities * Small improvements and minor bug fixes * Updated translations +[1] This is an experiment which needs to be enabled in the miscellaneous settings. + ### 1.1763 * Small improvements and minor bug fixes