Inject NotificationDao

pull/574/head
Alex Baker 7 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.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<? extends JobQueueEntry> entries) {

@ -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();
}
}

@ -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<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);
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) {
if (preferences.bundleNotifications()) {
if (appDatabase.notificationDao().count() == 0) {
if (notificationDao.count() == 0) {
notificationManager.cancel(SUMMARY_NOTIFICATION_ID);
} 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),
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)

Loading…
Cancel
Save