diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java index dc57f9200..3eb6f4f7c 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java @@ -35,6 +35,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import timber.log.Timber; +import static com.todoroo.andlib.utility.DateUtilities.now; + /** * Data Access layer for {@link Task}-related operations. * @@ -60,10 +62,13 @@ public abstract class TaskDao { this.preferences = preferences; } - public List selectActive(Criterion criterion) { - return query(Query.select(Task.PROPERTIES).where(Criterion.and(TaskCriteria.isActive(), criterion))).toList(); + public List needsRefresh() { + return needsRefresh(now()); } + @android.arch.persistence.room.Query("SELECT * FROM tasks WHERE completed = 0 AND deleted = 0 AND (hideUntil > :now OR dueDate > :now)") + abstract List needsRefresh(long now); + @android.arch.persistence.room.Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1") public abstract Task fetch(long id); @@ -170,9 +175,9 @@ public abstract class TaskDao { public ContentValues createNew(Task item) { if(!item.containsValue(Task.CREATION_DATE)) { - item.setCreationDate(DateUtilities.now()); + item.setCreationDate(now()); } - item.setModificationDate(DateUtilities.now()); + item.setModificationDate(now()); // set up task defaults if(!item.containsValue(Task.IMPORTANCE)) { @@ -247,7 +252,7 @@ public abstract class TaskDao { } if(!TaskApiDao.insignificantChange(values)) { if(!values.containsKey(Task.MODIFICATION_DATE.name)) { - item.setModificationDate(DateUtilities.now()); + item.setModificationDate(now()); } } DatabaseChangeOp update = new DatabaseChangeOp() { @@ -273,7 +278,7 @@ public abstract class TaskDao { */ public void setComplete(Task item, boolean completed) { if(completed) { - item.setCompletionDate(DateUtilities.now()); + item.setCompletionDate(now()); } else { item.setCompletionDate(0L); } diff --git a/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java b/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java index 2d1520c0e..db57a8152 100644 --- a/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java +++ b/app/src/main/java/org/tasks/scheduling/BackgroundScheduler.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; -import com.todoroo.andlib.sql.Criterion; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Task; @@ -17,8 +16,6 @@ import javax.inject.Inject; import timber.log.Timber; -import static java.lang.System.currentTimeMillis; - public class BackgroundScheduler extends InjectingJobIntentService { public static void enqueueWork(Context context) { @@ -44,8 +41,7 @@ public class BackgroundScheduler extends InjectingJobIntentService { jobManager.scheduleMidnightRefresh(); refreshScheduler.clear(); - long now = currentTimeMillis(); - for (Task task : taskDao.selectActive(Criterion.or(Task.HIDE_UNTIL.gt(now), Task.DUE_DATE.gt(now)))) { + for (Task task : taskDao.needsRefresh()) { refreshScheduler.scheduleRefresh(task); } }