Delete remote tasks before pushing changes

pull/795/head
Alex Baker 5 years ago
parent 4ed4d62ec9
commit efb826e1bb

@ -256,10 +256,14 @@ public class CaldavSynchronizer {
private void pushLocalChanges(
CaldavCalendar caldavCalendar, OkHttpClient httpClient, HttpUrl httpUrl) {
List<Task> 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<CaldavTask> 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) {

@ -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<CaldavTask> getDeleted(long taskId, String calendar);
@Query("SELECT * FROM caldav_tasks WHERE deleted > 0 AND calendar = :calendar")
List<CaldavTask> getDeleted(String calendar);
@Query("SELECT * FROM caldav_tasks WHERE task = :taskId AND deleted = 0 LIMIT 1")
CaldavTask getTask(long taskId);

Loading…
Cancel
Save