diff --git a/app/src/main/java/eu/faircode/email/AdapterKeyword.java b/app/src/main/java/eu/faircode/email/AdapterKeyword.java index 9cc45ee9de..2b7f769cdd 100644 --- a/app/src/main/java/eu/faircode/email/AdapterKeyword.java +++ b/app/src/main/java/eu/faircode/email/AdapterKeyword.java @@ -95,14 +95,14 @@ public class AdapterKeyword extends RecyclerView.Adapter() { @Override protected Void onExecute(Context context, Bundle args) { long id = args.getLong("id"); String name = args.getString("name"); - boolean selected = args.getBoolean("selected"); + boolean set = args.getBoolean("set"); DB db = DB.getInstance(context); @@ -110,7 +110,7 @@ public class AdapterKeyword extends RecyclerView.Adapter keywords = new ArrayList<>(Arrays.asList(message.keywords)); - while (keywords.remove(keyword)) - ; - if (set) - keywords.add(keyword); - - db.message().setMessageKeywords(message.id, DB.Converters.fromStringArray(keywords.toArray(new String[0]))); - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } } private static void onAdd(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPStore istore, IMAPFolder ifolder) throws MessagingException, IOException { diff --git a/app/src/main/java/eu/faircode/email/EntityOperation.java b/app/src/main/java/eu/faircode/email/EntityOperation.java index dc9dd6e487..70155241a2 100644 --- a/app/src/main/java/eu/faircode/email/EntityOperation.java +++ b/app/src/main/java/eu/faircode/email/EntityOperation.java @@ -35,8 +35,12 @@ import org.json.JSONException; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -145,6 +149,19 @@ public class EntityOperation { } return; + } else if (KEYWORD.equals(name)) { + String keyword = jargs.getString(0); + boolean set = jargs.getBoolean(1); + + List keywords = new ArrayList<>(Arrays.asList(message.keywords)); + while (keywords.remove(keyword)) + ; + if (set) + keywords.add(keyword); + Collections.sort(keywords); + + db.message().setMessageKeywords(message.id, DB.Converters.fromStringArray(keywords.toArray(new String[0]))); + } else if (MOVE.equals(name)) { // Parameters: // 0: target folder