From ef57e2ddfa309e0f56657ee3c42a35649e54d969 Mon Sep 17 00:00:00 2001 From: Negue Date: Tue, 18 Aug 2015 19:20:52 +0200 Subject: [PATCH] Save the task before tags/checklists --- Habitica/Habitica.iml | 8 +++++--- .../lib/api/TypeAdapter/TagsAdapter.java | 19 ++++++++++++++++--- .../lib/models/tasks/Task.java | 5 ++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Habitica/Habitica.iml b/Habitica/Habitica.iml index 603d0732f..95096f444 100644 --- a/Habitica/Habitica.iml +++ b/Habitica/Habitica.iml @@ -81,6 +81,7 @@ + @@ -110,18 +111,19 @@ - + - + + @@ -140,8 +142,8 @@ - + diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java index defd6561f..cb30c59bf 100644 --- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/TypeAdapter/TagsAdapter.java @@ -8,6 +8,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; import com.raizlabs.android.dbflow.sql.language.Select; import java.io.IOException; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; @@ -26,6 +27,15 @@ public class TagsAdapter extends TypeAdapter>{ out.endObject(); } + private boolean alreadyContainsTag(List list, String idToCheck) + { + for(TaskTag t : list) + if(t.getTag().getId().equals(idToCheck)) + return true; + + return false; + } + @Override public List read(JsonReader in) throws IOException { List tags = new ArrayList<>(); @@ -39,17 +49,20 @@ public class TagsAdapter extends TypeAdapter>{ in.beginObject(); break; case NAME: - String taskId = in.nextName(); + String tagId = in.nextName(); if(in.nextBoolean()) { TaskTag taskTag = new TaskTag(); for (Tag tag : allTags) { - if (tag.getId().equals(taskId)) { + if (tag.getId().equals(tagId)) { taskTag.setTag(tag); + + if(!alreadyContainsTag(tags, tagId)) + tags.add(taskTag); + break; } } - tags.add(taskTag); } break; case END_OBJECT: diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java index 7a92f3138..e1eca1317 100644 --- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/models/tasks/Task.java @@ -297,17 +297,20 @@ public class Task extends BaseModel { @Override public void save() { + super.save(); + if (this.tags != null) { for (TaskTag tag : this.tags) { tag.setTask(this); + tag.save(); } } if (this.checklist != null) { for (ChecklistItem item : this.checklist) { item.setTask(this); + item.save(); } } - super.save(); } public int getLightTaskColor()