From 4bfb94b8cf387a1b142ec04367be9e517fad5bec Mon Sep 17 00:00:00 2001 From: Saran Lertpradit Date: Thu, 24 Mar 2016 23:40:14 +0700 Subject: [PATCH] moves owned gear to onUserReceived --- .../habitica/ui/activities/MainActivity.java | 28 +++++++++++++++++++ .../lib/utils/ItemDataListDeserializer.java | 7 ----- 2 files changed, 28 insertions(+), 7 deletions(-) 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 d34e814ac..3b444603f 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 @@ -62,6 +62,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData; import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep; 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.Task; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; import com.mikepenz.materialdrawer.AccountHeader; @@ -70,8 +71,11 @@ import com.mikepenz.materialdrawer.DrawerBuilder; import com.mikepenz.materialdrawer.model.PrimaryDrawerItem; import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; import com.mikepenz.materialdrawer.model.interfaces.IProfile; +import com.raizlabs.android.dbflow.runtime.TransactionManager; import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction; import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener; +import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo; +import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction; import com.raizlabs.android.dbflow.sql.builder.Condition; import com.raizlabs.android.dbflow.sql.language.Delete; import com.raizlabs.android.dbflow.sql.language.From; @@ -314,6 +318,8 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O } loadAndRemoveOldChecklists(allChecklistItems); + + updateOwnedEquipment(user.getItems().getGear().owned); } } }).start(); @@ -424,6 +430,28 @@ public class MainActivity extends BaseActivity implements HabitRPGUserCallback.O } + private void updateOwnedEquipment(List owned) { + HashMap ownedMap = new HashMap<>(); + for (ItemData item : owned) { + ownedMap.put(item.key, item); + } + + List items = new Select().from(ItemData.class).queryList(); + List updates = new ArrayList<>(); + for (ItemData item : items) { + if (ownedMap.containsKey(item.key) && !Boolean.TRUE.equals(item.owned)) { + item.owned = true; + updates.add(item); + } else if (!ownedMap.containsKey(item.key) && Boolean.TRUE.equals(item.owned)) { + item.owned = null; + updates.add(item); + } + } + if (!updates.isEmpty()) { + TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(updates))); + } + } + private void updateUserAvatars() { avatarInHeader.updateData(user); } diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ItemDataListDeserializer.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ItemDataListDeserializer.java index 8768e1e99..a71d36052 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ItemDataListDeserializer.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ItemDataListDeserializer.java @@ -41,8 +41,6 @@ public class ItemDataListDeserializer implements JsonDeserializer item.str = parsedItem.str; item.per = parsedItem.per; item._int = parsedItem._int; - } else { - item.owned = itemObject.getAsBoolean(); } vals.add(item); object.remove(item.key); @@ -56,11 +54,6 @@ public class ItemDataListDeserializer implements JsonDeserializer } else { item = new ItemData(); item.key = entry.getKey(); - if (entry.getValue().isJsonNull()) { - item.owned = null; - } else { - item.owned = entry.getValue().getAsBoolean(); - } } vals.add(item); }