diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 8534ae6505..03fbe1f814 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -188,6 +188,18 @@ public interface DaoMessage { " ORDER BY message.received") LiveData> liveUnseenUnified(); + @Query("SELECT COUNT(message.id) FROM message" + + " JOIN account ON account.id = message.account" + + " JOIN folder ON folder.id = message.folder" + + " WHERE account.`synchronize`" + + " AND folder.unified" + + " AND NOT message.ui_seen" + + " AND NOT message.ui_hide" + + " AND NOT message.ui_found" + + " AND NOT message.ui_ignored" + + " ORDER BY message.received") + int getUnseenUnified(); + @Query("SELECT uid FROM message" + " WHERE folder = :folder" + " AND received >= :received" + diff --git a/app/src/main/java/eu/faircode/email/Widget.java b/app/src/main/java/eu/faircode/email/Widget.java index d2b633d71b..b9c2df2189 100644 --- a/app/src/main/java/eu/faircode/email/Widget.java +++ b/app/src/main/java/eu/faircode/email/Widget.java @@ -29,8 +29,14 @@ import android.widget.RemoteViews; public class Widget extends AppWidgetProvider { @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - update(appWidgetIds, appWidgetManager, context, -1); + public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) { + new Thread(new Runnable() { + @Override + public void run() { + DB db = DB.getInstance(context); + update(appWidgetIds, appWidgetManager, context, db.message().getUnseenUnified()); + } + }).start(); } static void update(Context context, int count) {