diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 73c9617060..87e1ac4bc5 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2809,13 +2809,11 @@ public class AdapterMessage extends RecyclerView.Adapter() { @Override - protected Void onExecute(Context context, Bundle args) { + protected Void onExecute(Context context, Bundle args) throws JSONException { long id = args.getLong("id"); + boolean block = args.getBoolean("block"); DB db = DB.getInstance(context); try { @@ -5098,12 +5099,40 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. EntityOperation.queue(context, message, EntityOperation.MOVE, junk.id); + if (block && message.from != null) + for (Address from : message.from) { + String sender = ((InternetAddress) from).getAddress(); + String name = MessageHelper.formatAddresses(new Address[]{from}); + + JSONObject jsender = new JSONObject(); + jsender.put("value", sender); + jsender.put("regex", false); + + JSONObject jcondition = new JSONObject(); + jcondition.put("sender", jsender); + + JSONObject jaction = new JSONObject(); + jaction.put("type", EntityRule.TYPE_MOVE); + jaction.put("target", junk.id); + + EntityRule rule = new EntityRule(); + rule.folder = message.folder; + rule.name = context.getString(R.string.title_block, name); + rule.order = 1000; + rule.enabled = true; + rule.stop = true; + rule.condition = jcondition.toString(); + rule.action = jaction.toString(); + rule.id = db.rule().insertRule(rule); + } + + db.setTransactionSuccessful(); } finally { db.endTransaction(); } - ServiceSynchronize.eval(context, "move"); + ServiceSynchronize.eval(context, "junk"); return null; } diff --git a/app/src/main/res/layout/dialog_junk.xml b/app/src/main/res/layout/dialog_junk.xml new file mode 100644 index 0000000000..bc2f73e39d --- /dev/null +++ b/app/src/main/res/layout/dialog_junk.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 967fa62424..d66fe44a69 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,6 +85,13 @@ Treat message from %1$s as spam? + Block %1$s + Block sender + + This will create a rule to automatically move future messages to the spam folder. + Creating and using rules is a pro feature. + + Waiting for suitable connection Sending messages \'%1$s\' failed