|
|
|
@ -6,11 +6,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
package com.todoroo.astrid.reminders;
|
|
|
|
package com.todoroo.astrid.reminders;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static com.google.common.collect.Lists.transform;
|
|
|
|
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
import com.todoroo.astrid.dao.TaskDao;
|
|
|
|
import com.todoroo.astrid.dao.TaskDao;
|
|
|
|
import com.todoroo.astrid.data.Task;
|
|
|
|
import com.todoroo.astrid.data.Task;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import org.tasks.injection.ApplicationScope;
|
|
|
|
import org.tasks.injection.ApplicationScope;
|
|
|
|
import org.tasks.jobs.NotificationQueue;
|
|
|
|
import org.tasks.jobs.NotificationQueue;
|
|
|
|
import org.tasks.jobs.ReminderEntry;
|
|
|
|
import org.tasks.jobs.ReminderEntry;
|
|
|
|
@ -49,24 +52,24 @@ public final class ReminderService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void scheduleAllAlarms(List<Long> taskIds) {
|
|
|
|
public void scheduleAllAlarms(List<Long> taskIds) {
|
|
|
|
for (Task task : taskDao.fetch(taskIds)) {
|
|
|
|
jobs.add(transform(taskDao.fetch(taskIds), this::getReminderEntry));
|
|
|
|
scheduleAlarm(task);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void scheduleAllAlarms() {
|
|
|
|
public void scheduleAllAlarms() {
|
|
|
|
for (Task task : taskDao.getTasksWithReminders()) {
|
|
|
|
jobs.add(transform(taskDao.getTasksWithReminders(), this::getReminderEntry));
|
|
|
|
scheduleAlarm(task);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void scheduleAlarm(Task task) {
|
|
|
|
|
|
|
|
jobs.add(getReminderEntry(task));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void cancelReminder(long taskId) {
|
|
|
|
public void cancelReminder(long taskId) {
|
|
|
|
jobs.cancelReminder(taskId);
|
|
|
|
jobs.cancelReminder(taskId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void scheduleAlarm(Task task) {
|
|
|
|
private @Nullable ReminderEntry getReminderEntry(Task task) {
|
|
|
|
if (task == null || !task.isSaved()) {
|
|
|
|
if (task == null || !task.isSaved()) {
|
|
|
|
return;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
long taskId = task.getId();
|
|
|
|
long taskId = task.getId();
|
|
|
|
@ -76,7 +79,7 @@ public final class ReminderService {
|
|
|
|
cancelReminder(taskId);
|
|
|
|
cancelReminder(taskId);
|
|
|
|
|
|
|
|
|
|
|
|
if (task.isCompleted() || task.isDeleted()) {
|
|
|
|
if (task.isCompleted() || task.isDeleted()) {
|
|
|
|
return;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// snooze reminder
|
|
|
|
// snooze reminder
|
|
|
|
@ -98,14 +101,16 @@ public final class ReminderService {
|
|
|
|
|
|
|
|
|
|
|
|
// snooze trumps all
|
|
|
|
// snooze trumps all
|
|
|
|
if (whenSnooze != NO_ALARM) {
|
|
|
|
if (whenSnooze != NO_ALARM) {
|
|
|
|
jobs.add(new ReminderEntry(taskId, whenSnooze, TYPE_SNOOZE));
|
|
|
|
return new ReminderEntry(taskId, whenSnooze, TYPE_SNOOZE);
|
|
|
|
} else if (whenRandom < whenDueDate && whenRandom < whenOverdue) {
|
|
|
|
} else if (whenRandom < whenDueDate && whenRandom < whenOverdue) {
|
|
|
|
jobs.add(new ReminderEntry(taskId, whenRandom, TYPE_RANDOM));
|
|
|
|
return new ReminderEntry(taskId, whenRandom, TYPE_RANDOM);
|
|
|
|
} else if (whenDueDate < whenOverdue) {
|
|
|
|
} else if (whenDueDate < whenOverdue) {
|
|
|
|
jobs.add(new ReminderEntry(taskId, whenDueDate, TYPE_DUE));
|
|
|
|
return new ReminderEntry(taskId, whenDueDate, TYPE_DUE);
|
|
|
|
} else if (whenOverdue != NO_ALARM) {
|
|
|
|
} else if (whenOverdue != NO_ALARM) {
|
|
|
|
jobs.add(new ReminderEntry(taskId, whenOverdue, TYPE_OVERDUE));
|
|
|
|
return new ReminderEntry(taskId, whenOverdue, TYPE_OVERDUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private long calculateNextSnoozeReminder(Task task) {
|
|
|
|
private long calculateNextSnoozeReminder(Task task) {
|
|
|
|
|