From 40b952408daa8a149b734977c9cf21b238eda5d5 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 5 Nov 2019 17:15:51 -0600 Subject: [PATCH] Caldav subtasks requires lollipop --- .../todoroo/astrid/adapter/TaskAdapterProvider.java | 4 +++- app/src/main/java/org/tasks/data/CaldavDao.java | 11 ++++++++++- app/src/main/java/org/tasks/ui/TaskListViewModel.java | 3 ++- 3 files changed, 15 insertions(+), 3 deletions(-) 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 b9675317b..2082631dc 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.java @@ -1,5 +1,7 @@ package com.todoroo.astrid.adapter; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; + import android.content.Context; import android.text.TextUtils; import com.todoroo.astrid.api.CaldavFilter; @@ -78,7 +80,7 @@ public class TaskAdapterProvider { CaldavFilter caldavFilter = (CaldavFilter) filter; CaldavCalendar calendar = caldavDao.getCalendarByUuid(caldavFilter.getUuid()); if (calendar != null) { - return new CaldavTaskAdapter(taskDao, caldavDao); + return atLeastLollipop() ? new CaldavTaskAdapter(taskDao, caldavDao) : new TaskAdapter(); } } else { return subtasksHelper.shouldUseSubtasksFragmentForFilter(filter) diff --git a/app/src/main/java/org/tasks/data/CaldavDao.java b/app/src/main/java/org/tasks/data/CaldavDao.java index 6fc98fe2c..3ae898f28 100644 --- a/app/src/main/java/org/tasks/data/CaldavDao.java +++ b/app/src/main/java/org/tasks/data/CaldavDao.java @@ -1,5 +1,7 @@ package org.tasks.data; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; + import androidx.lifecycle.LiveData; import androidx.room.Dao; import androidx.room.Delete; @@ -7,6 +9,7 @@ import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; import io.reactivex.Single; +import java.util.Collections; import java.util.List; import org.tasks.filters.CaldavFilters; @@ -114,6 +117,12 @@ public abstract class CaldavDao { @Query("UPDATE caldav_tasks SET cd_parent = IFNULL((SELECT cd_task FROM caldav_tasks AS p WHERE p.cd_remote_id = caldav_tasks.cd_remote_parent), cd_parent) WHERE cd_calendar = :calendar AND cd_remote_parent IS NOT NULL and cd_remote_parent != ''") public abstract void updateParents(String calendar); + public List getChildren(List ids) { + return atLeastLollipop() + ? getChildrenRecursive(ids) + : Collections.emptyList(); + } + @Query("WITH RECURSIVE " + " recursive_caldav (cd_task) AS ( " + " SELECT cd_task " @@ -132,5 +141,5 @@ public abstract class CaldavDao { + " WHERE tasks.deleted = 0 " + " ) " + "SELECT cd_task FROM recursive_caldav") - public abstract List getChildren(List ids); + abstract List getChildrenRecursive(List ids); } diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.java b/app/src/main/java/org/tasks/ui/TaskListViewModel.java index 3f2f0b844..e65b8cc05 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.java +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.java @@ -2,6 +2,7 @@ package org.tasks.ui; import static com.todoroo.andlib.sql.Field.field; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; import static com.todoroo.astrid.activity.TaskListFragment.CALDAV_METADATA_JOIN; import static com.todoroo.astrid.activity.TaskListFragment.GTASK_METADATA_JOIN; import static com.todoroo.astrid.activity.TaskListFragment.TAGS_METADATA_JOIN; @@ -126,7 +127,7 @@ public class TaskListViewModel extends ViewModel implements Observer