From b04ce74069e8ec8ca78292a5022a8365b3f1cdcf Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 25 Jun 2020 17:55:59 +0200 Subject: [PATCH] Update labels locally --- app/src/main/java/eu/faircode/email/Core.java | 14 +++++++++++--- .../main/java/eu/faircode/email/DaoMessage.java | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index eb2aeefdd1..8e63b90966 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -708,9 +708,17 @@ class Core { ((GmailMessage) imessage).setLabels(new String[]{label}, set); // Gmail does not push label changes - JSONArray fargs = new JSONArray(); - fargs.put(message.uid); - onFetch(context, fargs, folder, istore, ifolder, state); + + List labels = new ArrayList<>(); + if (message.labels != null) + labels.addAll(Arrays.asList(message.labels)); + labels.remove(label); + if (set) + labels.add(label); + + DB db = DB.getInstance(context); + db.message().setMessageLabels(message.id, + DB.Converters.fromStringArray(labels.toArray(new String[0]))); } private static void onAdd(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPStore istore, IMAPFolder ifolder, State state) throws MessagingException, IOException { diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 46c0159ce6..76d4196ae9 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -634,6 +634,9 @@ public interface DaoMessage { @Query("UPDATE message SET keywords = :keywords WHERE id = :id") int setMessageKeywords(long id, String keywords); + @Query("UPDATE message SET labels = :labels WHERE id = :id") + int setMessageLabels(long id, String labels); + @Query("UPDATE message SET ui_seen = :ui_seen WHERE id = :id") int setMessageUiSeen(long id, boolean ui_seen);