Fix sorting dates with time before those without

Facepalm
pull/757/head
Alex Baker 7 years ago
parent 54e72ab4e2
commit 21aeb754a0

@ -22,6 +22,9 @@ import org.tasks.preferences.Preferences;
*/ */
public class SortHelper { public class SortHelper {
private static final String ADJUSTED_DUE_DATE =
"(CASE WHEN (dueDate / 1000) % 60 > 0 THEN dueDate ELSE (dueDate + 43140000) END)";
public static final int SORT_AUTO = 0; public static final int SORT_AUTO = 0;
public static final int SORT_ALPHA = 1; public static final int SORT_ALPHA = 1;
public static final int SORT_DUE = 2; public static final int SORT_DUE = 2;
@ -76,7 +79,7 @@ public class SortHelper {
case SORT_DUE: case SORT_DUE:
order = order =
Order.asc( Order.asc(
"(CASE WHEN (dueDate=0) THEN (strftime('%s','now')*1000)*2 ELSE (CASE WHEN (dueDate / 60000) > 0 THEN dueDate ELSE (dueDate + 43140000) END) END)+importance"); "(CASE WHEN (dueDate=0) THEN (strftime('%s','now')*1000)*2 ELSE " + ADJUSTED_DUE_DATE + " END)+importance");
break; break;
case SORT_IMPORTANCE: case SORT_IMPORTANCE:
order = order =
@ -95,7 +98,7 @@ public class SortHelper {
"THEN (strftime('%s','now')*1000)*2 " "THEN (strftime('%s','now')*1000)*2 "
+ // then now * 2 + // then now * 2
"ELSE (" "ELSE ("
+ adjustedDueDateFunction() + ADJUSTED_DUE_DATE
+ ") END) " + ") END) "
+ // else due time + // else due time
"+ 172800000 * importance"); // add 2 days * importance "+ 172800000 * importance"); // add 2 days * importance
@ -106,9 +109,4 @@ public class SortHelper {
return order; return order;
} }
private static String adjustedDueDateFunction() {
// if no due time use 11:59AM
return "(CASE WHEN (dueDate / 60000) > 0 THEN dueDate ELSE (dueDate + 43140000) END)";
}
} }

@ -181,7 +181,7 @@ public abstract class TaskDao {
@androidx.room.Query( @androidx.room.Query(
"SELECT * FROM tasks " "SELECT * FROM tasks "
+ "WHERE completed = 0 AND deleted = 0 AND hideUntil < (strftime('%s','now')*1000) " + "WHERE completed = 0 AND deleted = 0 AND hideUntil < (strftime('%s','now')*1000) "
+ "ORDER BY (CASE WHEN (dueDate=0) THEN (strftime('%s','now')*1000)*2 ELSE ((CASE WHEN (dueDate / 60000) > 0 THEN dueDate ELSE (dueDate + 43140000) END)) END) + 172800000 * importance ASC " + "ORDER BY (CASE WHEN (dueDate=0) THEN (strftime('%s','now')*1000)*2 ELSE ((CASE WHEN (dueDate / 1000) % 60 > 0 THEN dueDate ELSE (dueDate + 43140000) END)) END) + 172800000 * importance ASC "
+ "LIMIT 100") + "LIMIT 100")
public abstract List<Task> getAstrid2TaskProviderTasks(); public abstract List<Task> getAstrid2TaskProviderTasks();

Loading…
Cancel
Save