diff --git a/app/src/main/java/org/tasks/Notifier.java b/app/src/main/java/org/tasks/Notifier.java index 2dd85b3a6..8635c4467 100644 --- a/app/src/main/java/org/tasks/Notifier.java +++ b/app/src/main/java/org/tasks/Notifier.java @@ -17,11 +17,11 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.reminders.ReminderService; import com.todoroo.astrid.voice.VoiceOutputAssistant; -import org.tasks.db.AppDatabase; import org.tasks.injection.ForApplication; import org.tasks.intents.TaskIntents; import org.tasks.jobs.JobQueueEntry; import org.tasks.notifications.AudioManager; +import org.tasks.notifications.NotificationDao; import org.tasks.notifications.NotificationManager; import org.tasks.notifications.TelephonyManager; import org.tasks.preferences.Preferences; @@ -56,13 +56,13 @@ public class Notifier { private final AudioManager audioManager; private final VoiceOutputAssistant voiceOutputAssistant; private final Preferences preferences; - private final AppDatabase appDatabase; + private final NotificationDao notificationDao; @Inject public Notifier(@ForApplication Context context, TaskDao taskDao, NotificationManager notificationManager, TelephonyManager telephonyManager, AudioManager audioManager, VoiceOutputAssistant voiceOutputAssistant, - Preferences preferences, AppDatabase appDatabase) { + Preferences preferences, NotificationDao notificationDao) { this.context = context; this.taskDao = taskDao; this.notificationManager = notificationManager; @@ -70,7 +70,7 @@ public class Notifier { this.audioManager = audioManager; this.voiceOutputAssistant = voiceOutputAssistant; this.preferences = preferences; - this.appDatabase = appDatabase; + this.notificationDao = notificationDao; } public void triggerFilterNotification(final Filter filter) { @@ -217,7 +217,7 @@ public class Notifier { } public void restoreNotifications() { - triggerNotifications(appDatabase.notificationDao().getAll(), false); + triggerNotifications(notificationDao.getAll(), false); } public void triggerTaskNotifications(List entries) { diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.java b/app/src/main/java/org/tasks/injection/ApplicationModule.java index d51f48fe2..c041f23ef 100644 --- a/app/src/main/java/org/tasks/injection/ApplicationModule.java +++ b/app/src/main/java/org/tasks/injection/ApplicationModule.java @@ -7,7 +7,7 @@ import org.tasks.ErrorReportingSingleThreadExecutor; import org.tasks.analytics.Tracker; import org.tasks.db.AppDatabase; import org.tasks.locale.Locale; -import org.tasks.themes.ThemeCache; +import org.tasks.notifications.NotificationDao; import org.tasks.ui.CheckBoxes; import org.tasks.ui.WidgetCheckBoxes; @@ -64,4 +64,9 @@ public class ApplicationModule { public AppDatabase getAppDatabase() { return Room.databaseBuilder(context, AppDatabase.class, "app-database").build(); } + + @Provides + public NotificationDao getNotificationDao(AppDatabase appDatabase) { + return appDatabase.notificationDao(); + } } diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.java b/app/src/main/java/org/tasks/notifications/NotificationManager.java index 33a12f89e..f35ecb65b 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.java +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.java @@ -14,7 +14,6 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.data.Task; import org.tasks.R; -import org.tasks.db.AppDatabase; import org.tasks.injection.ApplicationScope; import org.tasks.injection.ForApplication; import org.tasks.intents.TaskIntents; @@ -44,18 +43,18 @@ public class NotificationManager { static final String EXTRA_NOTIFICATION_ID = "extra_notification_id"; private final android.app.NotificationManager notificationManager; - private final AppDatabase appDatabase; + private final NotificationDao notificationDao; private final Context context; private final Preferences preferences; @Inject public NotificationManager(@ForApplication Context context, Preferences preferences, - AppDatabase appDatabase) { + NotificationDao notificationDao) { this.context = context; this.preferences = preferences; notificationManager = (android.app.NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - this.appDatabase = appDatabase; + this.notificationDao = notificationDao; if (atLeastOreo()) { notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_DEFAULT, R.string.notifications)); notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_CALLS, R.string.missed_calls)); @@ -78,7 +77,7 @@ public class NotificationManager { public void cancel(long id) { notificationManager.cancel((int) id); Completable.fromAction(() -> { - appDatabase.notificationDao().delete(id); + notificationDao.delete(id); updateSummary(false, false, false); }) .observeOn(AndroidSchedulers.mainThread()) @@ -87,7 +86,7 @@ public class NotificationManager { } public void notifyTasks(Map notifications, boolean alert, boolean nonstop, boolean fiveTimes) { - appDatabase.notificationDao().insertAll(newArrayList(notifications.keySet())); + notificationDao.insertAll(newArrayList(notifications.keySet())); updateSummary(alert && notifications.size() > 1, nonstop, fiveTimes); ArrayList> entries = newArrayList(notifications.entrySet()); @@ -133,13 +132,13 @@ public class NotificationManager { private void updateSummary(boolean notify, boolean nonStop, boolean fiveTimes) { if (preferences.bundleNotifications()) { - if (appDatabase.notificationDao().count() == 0) { + if (notificationDao.count() == 0) { notificationManager.cancel(SUMMARY_NOTIFICATION_ID); } else { - Iterable notificationIds = transform(appDatabase.notificationDao().getAll(), n -> n.taskId); + Iterable notificationIds = transform(notificationDao.getAll(), n -> n.taskId); Filter notifications = new Filter(context.getString(R.string.notifications), new QueryTemplate().where(Task.ID.in(notificationIds))); - long when = appDatabase.notificationDao().latestTimestamp(); + long when = notificationDao.latestTimestamp(); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationManager.NOTIFICATION_CHANNEL_DEFAULT) .setGroupSummary(true) .setGroup(GROUP_KEY)