diff --git a/app/src/main/java/org/tasks/notifications/Notification.java b/app/src/main/java/org/tasks/notifications/Notification.java index a49ab2439..4f0de9240 100644 --- a/app/src/main/java/org/tasks/notifications/Notification.java +++ b/app/src/main/java/org/tasks/notifications/Notification.java @@ -4,12 +4,19 @@ import androidx.room.ColumnInfo; import androidx.room.Entity; import androidx.room.Index; import androidx.room.PrimaryKey; +import com.todoroo.andlib.data.Property.LongProperty; +import com.todoroo.andlib.data.Table; @Entity( - tableName = "notification", + tableName = Notification.TABLE_NAME, indices = {@Index(value = "task", unique = true)}) public class Notification { + public static final String TABLE_NAME = "notification"; + + public static final Table TABLE = new Table(TABLE_NAME); + public static final LongProperty TASK = new LongProperty(TABLE, "task"); + @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "uid") public int uid; diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.java b/app/src/main/java/org/tasks/notifications/NotificationManager.java index 1752bcc55..5f30998c1 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.java +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.java @@ -23,6 +23,7 @@ import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; import com.google.common.base.Joiner; import com.google.common.base.Strings; +import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.api.Filter; @@ -37,6 +38,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.inject.Inject; +import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.data.Location; import org.tasks.data.LocationDao; @@ -66,6 +68,7 @@ public class NotificationManager { private static final String GROUP_KEY = "tasks"; private static final int NOTIFICATIONS_PER_SECOND = 4; private final NotificationManagerCompat notificationManagerCompat; + private final LocalBroadcastManager localBroadcastManager; private final LocationDao locationDao; private final NotificationDao notificationDao; private final TaskDao taskDao; @@ -80,12 +83,14 @@ public class NotificationManager { Preferences preferences, NotificationDao notificationDao, TaskDao taskDao, - LocationDao locationDao) { + LocationDao locationDao, + LocalBroadcastManager localBroadcastManager) { this.context = context; this.preferences = preferences; this.notificationDao = notificationDao; this.taskDao = taskDao; this.locationDao = locationDao; + this.localBroadcastManager = localBroadcastManager; notificationManagerCompat = NotificationManagerCompat.from(context); } @@ -160,6 +165,8 @@ public class NotificationManager { } else { createNotifications(newNotifications, alert, nonstop, fiveTimes, false); } + + localBroadcastManager.broadcastRefresh(); } private void createNotifications( @@ -243,7 +250,8 @@ public class NotificationManager { Filter filter = new Filter( context.getString(R.string.notifications), - new QueryTemplate().where(Task.ID.in(taskIds))); + new QueryTemplate() + .join(Join.inner(Notification.TABLE, Task.ID.eq(Notification.TASK)))); long when = notificationDao.latestTimestamp(); int maxPriority = 3; String summaryTitle =