diff --git a/CHANGELOG.md b/CHANGELOG.md index 82d0a30b9..47246a394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ Change Log --- +### 7.2.2 (2019-12-03) + +* Fix Google Task sorting +* Fix crash when deleting 500+ tasks + ### 7.2.1 (2019-11-27) * Bug fixes and minor improvements diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 56ec72297..823bff555 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -36,8 +36,8 @@ android { defaultConfig { testApplicationId = "org.tasks.test" applicationId = "org.tasks" - versionCode = 626 - versionName = "7.2.1" + versionCode = 628 + versionName = "7.2.2" targetSdkVersion(Versions.targetSdk) minSdkVersion(Versions.minSdk) multiDexEnabled = true diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java index c5f86ded7..a145b1e49 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java @@ -104,11 +104,11 @@ public class TaskAdapterProvider { } private TaskAdapter createGoogleTaskAdapter(GtasksFilter filter) { - String query = GtasksFilter.toManualOrder(filter.getSqlQuery()); - filter.setFilterQueryOverride(query); - return preferences.isManualSort() - ? new GoogleTaskManualSortAdapter(taskDao, googleTaskDao) - : new GoogleTaskAdapter(taskDao, googleTaskDao, preferences.addGoogleTasksToTop()); + if (preferences.isManualSort()) { + filter.setFilterQueryOverride(GtasksFilter.toManualOrder(filter.getSqlQuery())); + return new GoogleTaskManualSortAdapter(taskDao, googleTaskDao); + } + return new GoogleTaskAdapter(taskDao, googleTaskDao, preferences.addGoogleTasksToTop()); } private TaskAdapter createManualFilterTaskAdapter(Filter filter) { diff --git a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java index fc53361c9..e8fdccfd1 100644 --- a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java +++ b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java @@ -70,14 +70,11 @@ public class GtasksFilter extends Filter { private static QueryTemplate getQueryTemplate(GoogleTaskList list) { return new QueryTemplate() .join(Join.left(GoogleTask.TABLE, Task.ID.eq(GoogleTask.TASK))) - .where(getCriterion(list)); - } - - public static Criterion getCriterion(GoogleTaskList list) { - return Criterion.and( - TaskDao.TaskCriteria.activeAndVisible(), - GoogleTask.DELETED.eq(0), - GoogleTask.LIST.eq(list.getRemoteId())); + .where( + Criterion.and( + TaskDao.TaskCriteria.activeAndVisible(), + GoogleTask.DELETED.eq(0), + GoogleTask.LIST.eq(list.getRemoteId()))); } private static Map getValuesForNewTasks(GoogleTaskList list) { diff --git a/app/src/main/java/org/tasks/jobs/WorkManager.java b/app/src/main/java/org/tasks/jobs/WorkManager.java index 6085d73be..601f2833f 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManager.java +++ b/app/src/main/java/org/tasks/jobs/WorkManager.java @@ -8,6 +8,7 @@ import static io.reactivex.Single.just; import static io.reactivex.Single.zip; import static org.tasks.date.DateTimeUtils.midnight; import static org.tasks.date.DateTimeUtils.newDateTime; +import static org.tasks.db.DbUtils.batch; import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.printDuration; import static org.tasks.time.DateTimeUtils.printTimestamp; @@ -48,6 +49,7 @@ import timber.log.Timber; @ApplicationScope public class WorkManager { + private static final int MAX_CLEANUP_LENGTH = 500; private static final String TAG_BACKUP = "tag_backup"; private static final String TAG_REFRESH = "tag_refresh"; private static final String TAG_MIDNIGHT_REFRESH = "tag_midnight_refresh"; @@ -86,13 +88,17 @@ public class WorkManager { } public void cleanup(List ids) { - workManager.enqueue( - new OneTimeWorkRequest.Builder(CleanupWork.class) - .setInputData( - new Data.Builder() - .putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(ids)) - .build()) - .build()); + batch( + ids, + MAX_CLEANUP_LENGTH, + b -> + workManager.enqueue( + new Builder(CleanupWork.class) + .setInputData( + new Data.Builder() + .putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(b)) + .build()) + .build())); } public void sync(boolean immediate) {