diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index ee5f9cae1..97a811f86 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,7 +2,7 @@ diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 2514937d5..4217b42f2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -58,6 +58,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.responses.MaintenanceResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; import com.mikepenz.materialdrawer.AccountHeader; @@ -378,6 +379,14 @@ public class MainActivity extends BaseActivity implements Action1, Ha } loadAndRemoveOldTaskTags(allTaskTags); + ArrayList allReminders = new ArrayList<>(); + for (Task t : allTasks) { + if (t.getReminders() != null) { + allReminders.addAll(t.getReminders()); + } + } + loadAndRemoveOldReminders(allReminders); + loadAndRemoveOldTags(user.getTags()); updateOwnedDataForUser(user); @@ -561,6 +570,52 @@ public class MainActivity extends BaseActivity implements Action1, Ha } + private void loadAndRemoveOldReminders(final List onlineEntries) { + final ArrayList onlineTaskTagItemIdList = new ArrayList<>(); + + for (RemindersItem item : onlineEntries) { + onlineTaskTagItemIdList.add(item.getId()); + } + + From query = new Select().from(RemindersItem.class); + try { + if (query.count() != onlineEntries.size()) { + + // Load Database Checklist items + query.async().queryList(new TransactionListener>() { + @Override + public void onResultReceived(List items) { + + ArrayList remindersToDelete = new ArrayList<>(); + + for (RemindersItem reminder : items) { + if (!onlineTaskTagItemIdList.contains(reminder.getId())) { + remindersToDelete.add(reminder); + } + } + + for (RemindersItem reminder : remindersToDelete) { + reminder.async().delete(); + } + } + + @Override + public boolean onReady(BaseTransaction> baseTransaction) { + return false; + } + + @Override + public boolean hasResult(BaseTransaction> baseTransaction, List items) { + return items != null && items.size() > 0; + } + }); + } + } catch (SQLiteDoneException ignored) { + //Ignored + } + + } + private void loadAndRemoveOldTags(final List onlineEntries) { final ArrayList onlineTaskTagItemIdList = new ArrayList<>(); diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java index 143fab4a9..8434e1df0 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java @@ -629,6 +629,6 @@ public class Task extends BaseModel { TaskDeleteEvent event = new TaskDeleteEvent(); event.task = this; EventBus.getDefault().post(event); - super.save(); + super.delete(); } }