diff --git a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java index 40f0dcfad..7f1b8c607 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java +++ b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java @@ -256,10 +256,14 @@ public class CaldavSynchronizer { private void pushLocalChanges( CaldavCalendar caldavCalendar, OkHttpClient httpClient, HttpUrl httpUrl) { - List tasks = taskDao.getCaldavTasksToPush(caldavCalendar.getUuid()); - for (com.todoroo.astrid.data.Task task : tasks) { + + for (CaldavTask task : caldavDao.getDeleted(caldavCalendar.getUuid())) { + deleteRemoteResource(httpClient, httpUrl, task); + } + + for (Task task : taskDao.getCaldavTasksToPush(caldavCalendar.getUuid())) { try { - pushTask(task, caldavCalendar, httpClient, httpUrl); + pushTask(task, httpClient, httpUrl); } catch (IOException e) { Timber.e(e); } @@ -288,18 +292,8 @@ public class CaldavSynchronizer { return true; } - private void pushTask( - Task task, CaldavCalendar caldavCalendar, OkHttpClient httpClient, HttpUrl httpUrl) - throws IOException { + private void pushTask(Task task, OkHttpClient httpClient, HttpUrl httpUrl) throws IOException { Timber.d("pushing %s", task); - List deleted = caldavDao.getDeleted(task.getId(), caldavCalendar.getUuid()); - if (!deleted.isEmpty()) { - for (CaldavTask entry : deleted) { - deleteRemoteResource(httpClient, httpUrl, entry); - } - return; - } - CaldavTask caldavTask = caldavDao.getTask(task.getId()); if (caldavTask == null) { diff --git a/app/src/main/java/org/tasks/data/CaldavDao.java b/app/src/main/java/org/tasks/data/CaldavDao.java index f96b813d6..ea302358a 100644 --- a/app/src/main/java/org/tasks/data/CaldavDao.java +++ b/app/src/main/java/org/tasks/data/CaldavDao.java @@ -48,8 +48,8 @@ public interface CaldavDao { @Delete void delete(CaldavTask caldavTask); - @Query("SELECT * FROM caldav_tasks WHERE task = :taskId AND deleted > 0 AND calendar = :calendar") - List getDeleted(long taskId, String calendar); + @Query("SELECT * FROM caldav_tasks WHERE deleted > 0 AND calendar = :calendar") + List getDeleted(String calendar); @Query("SELECT * FROM caldav_tasks WHERE task = :taskId AND deleted = 0 LIMIT 1") CaldavTask getTask(long taskId);