Inject NotificationDao

pull/574/head
Alex Baker 8 years ago
parent 0105d034b6
commit 7dce9854a2

@ -17,11 +17,11 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.reminders.ReminderService; import com.todoroo.astrid.reminders.ReminderService;
import com.todoroo.astrid.voice.VoiceOutputAssistant; import com.todoroo.astrid.voice.VoiceOutputAssistant;
import org.tasks.db.AppDatabase;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.jobs.JobQueueEntry; import org.tasks.jobs.JobQueueEntry;
import org.tasks.notifications.AudioManager; import org.tasks.notifications.AudioManager;
import org.tasks.notifications.NotificationDao;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import org.tasks.notifications.TelephonyManager; import org.tasks.notifications.TelephonyManager;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -56,13 +56,13 @@ public class Notifier {
private final AudioManager audioManager; private final AudioManager audioManager;
private final VoiceOutputAssistant voiceOutputAssistant; private final VoiceOutputAssistant voiceOutputAssistant;
private final Preferences preferences; private final Preferences preferences;
private final AppDatabase appDatabase; private final NotificationDao notificationDao;
@Inject @Inject
public Notifier(@ForApplication Context context, TaskDao taskDao, public Notifier(@ForApplication Context context, TaskDao taskDao,
NotificationManager notificationManager, TelephonyManager telephonyManager, NotificationManager notificationManager, TelephonyManager telephonyManager,
AudioManager audioManager, VoiceOutputAssistant voiceOutputAssistant, AudioManager audioManager, VoiceOutputAssistant voiceOutputAssistant,
Preferences preferences, AppDatabase appDatabase) { Preferences preferences, NotificationDao notificationDao) {
this.context = context; this.context = context;
this.taskDao = taskDao; this.taskDao = taskDao;
this.notificationManager = notificationManager; this.notificationManager = notificationManager;
@ -70,7 +70,7 @@ public class Notifier {
this.audioManager = audioManager; this.audioManager = audioManager;
this.voiceOutputAssistant = voiceOutputAssistant; this.voiceOutputAssistant = voiceOutputAssistant;
this.preferences = preferences; this.preferences = preferences;
this.appDatabase = appDatabase; this.notificationDao = notificationDao;
} }
public void triggerFilterNotification(final Filter filter) { public void triggerFilterNotification(final Filter filter) {
@ -217,7 +217,7 @@ public class Notifier {
} }
public void restoreNotifications() { public void restoreNotifications() {
triggerNotifications(appDatabase.notificationDao().getAll(), false); triggerNotifications(notificationDao.getAll(), false);
} }
public void triggerTaskNotifications(List<? extends JobQueueEntry> entries) { public void triggerTaskNotifications(List<? extends JobQueueEntry> entries) {

@ -7,7 +7,7 @@ import org.tasks.ErrorReportingSingleThreadExecutor;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.db.AppDatabase; import org.tasks.db.AppDatabase;
import org.tasks.locale.Locale; import org.tasks.locale.Locale;
import org.tasks.themes.ThemeCache; import org.tasks.notifications.NotificationDao;
import org.tasks.ui.CheckBoxes; import org.tasks.ui.CheckBoxes;
import org.tasks.ui.WidgetCheckBoxes; import org.tasks.ui.WidgetCheckBoxes;
@ -64,4 +64,9 @@ public class ApplicationModule {
public AppDatabase getAppDatabase() { public AppDatabase getAppDatabase() {
return Room.databaseBuilder(context, AppDatabase.class, "app-database").build(); return Room.databaseBuilder(context, AppDatabase.class, "app-database").build();
} }
@Provides
public NotificationDao getNotificationDao(AppDatabase appDatabase) {
return appDatabase.notificationDao();
}
} }

@ -14,7 +14,6 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import org.tasks.R; import org.tasks.R;
import org.tasks.db.AppDatabase;
import org.tasks.injection.ApplicationScope; import org.tasks.injection.ApplicationScope;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
@ -44,18 +43,18 @@ public class NotificationManager {
static final String EXTRA_NOTIFICATION_ID = "extra_notification_id"; static final String EXTRA_NOTIFICATION_ID = "extra_notification_id";
private final android.app.NotificationManager notificationManager; private final android.app.NotificationManager notificationManager;
private final AppDatabase appDatabase; private final NotificationDao notificationDao;
private final Context context; private final Context context;
private final Preferences preferences; private final Preferences preferences;
@Inject @Inject
public NotificationManager(@ForApplication Context context, Preferences preferences, public NotificationManager(@ForApplication Context context, Preferences preferences,
AppDatabase appDatabase) { NotificationDao notificationDao) {
this.context = context; this.context = context;
this.preferences = preferences; this.preferences = preferences;
notificationManager = (android.app.NotificationManager) notificationManager = (android.app.NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE); context.getSystemService(Context.NOTIFICATION_SERVICE);
this.appDatabase = appDatabase; this.notificationDao = notificationDao;
if (atLeastOreo()) { if (atLeastOreo()) {
notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_DEFAULT, R.string.notifications)); notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_DEFAULT, R.string.notifications));
notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_CALLS, R.string.missed_calls)); notificationManager.createNotificationChannel(createNotificationChannel(NOTIFICATION_CHANNEL_CALLS, R.string.missed_calls));
@ -78,7 +77,7 @@ public class NotificationManager {
public void cancel(long id) { public void cancel(long id) {
notificationManager.cancel((int) id); notificationManager.cancel((int) id);
Completable.fromAction(() -> { Completable.fromAction(() -> {
appDatabase.notificationDao().delete(id); notificationDao.delete(id);
updateSummary(false, false, false); updateSummary(false, false, false);
}) })
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
@ -87,7 +86,7 @@ public class NotificationManager {
} }
public void notifyTasks(Map<org.tasks.notifications.Notification, Notification> notifications, boolean alert, boolean nonstop, boolean fiveTimes) { public void notifyTasks(Map<org.tasks.notifications.Notification, Notification> 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); updateSummary(alert && notifications.size() > 1, nonstop, fiveTimes);
ArrayList<Map.Entry<org.tasks.notifications.Notification, Notification>> entries = newArrayList(notifications.entrySet()); ArrayList<Map.Entry<org.tasks.notifications.Notification, Notification>> entries = newArrayList(notifications.entrySet());
@ -133,13 +132,13 @@ public class NotificationManager {
private void updateSummary(boolean notify, boolean nonStop, boolean fiveTimes) { private void updateSummary(boolean notify, boolean nonStop, boolean fiveTimes) {
if (preferences.bundleNotifications()) { if (preferences.bundleNotifications()) {
if (appDatabase.notificationDao().count() == 0) { if (notificationDao.count() == 0) {
notificationManager.cancel(SUMMARY_NOTIFICATION_ID); notificationManager.cancel(SUMMARY_NOTIFICATION_ID);
} else { } else {
Iterable<Long> notificationIds = transform(appDatabase.notificationDao().getAll(), n -> n.taskId); Iterable<Long> notificationIds = transform(notificationDao.getAll(), n -> n.taskId);
Filter notifications = new Filter(context.getString(R.string.notifications), Filter notifications = new Filter(context.getString(R.string.notifications),
new QueryTemplate().where(Task.ID.in(notificationIds))); 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) NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NotificationManager.NOTIFICATION_CHANNEL_DEFAULT)
.setGroupSummary(true) .setGroupSummary(true)
.setGroup(GROUP_KEY) .setGroup(GROUP_KEY)

Loading…
Cancel
Save