diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java index b94b29607..b6c320a85 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.java @@ -71,11 +71,6 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { return (HabiticaBaseApplication) context.getApplicationContext(); } - private static void setFinalStatic(Field field, @Nullable Object newValue) throws NoSuchFieldException, IllegalAccessException { - field.setAccessible(true); - field.set(null, newValue); - } - public static void logout(Context context) { Realm realm = Realm.getDefaultInstance(); getInstance(context).deleteDatabase(realm.getPath()); @@ -235,7 +230,7 @@ public abstract class HabiticaBaseApplication extends MultiDexApplication { @Override public void onActivityDestroyed(Activity activity) { - if (currentActivity.equals(activity)) { + if (currentActivity != null && currentActivity.equals(activity)) { currentActivity = null; } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java index 115201a70..3ae425327 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import io.realm.OrderedRealmCollectionSnapshot; import io.realm.Realm; import io.realm.RealmResults; import io.realm.Sort; @@ -101,7 +102,7 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement } private void removeOldTasks(Realm realm, String userID, List onlineTaskList) { - RealmResults localTasks = realm.where(Task.class).equalTo("userId", userID).findAll(); + OrderedRealmCollectionSnapshot localTasks = realm.where(Task.class).equalTo("userId", userID).findAll().createSnapshot(); for (Task localTask : localTasks) { if (!onlineTaskList.contains(localTask)) { for (ChecklistItem item : localTask.checklist) { @@ -116,7 +117,7 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement } private void removeOldChecklists(Realm realm, List onlineItems) { - RealmResults localItems = realm.where(ChecklistItem.class).findAll(); + OrderedRealmCollectionSnapshot localItems = realm.where(ChecklistItem.class).findAll().createSnapshot(); for (ChecklistItem localItem : localItems) { if (!onlineItems.contains(localItem)) { localItem.deleteFromRealm(); @@ -125,7 +126,7 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement } private void removeOldReminders(Realm realm, List onlineReminders) { - RealmResults localReminders = realm.where(RemindersItem.class).findAll(); + OrderedRealmCollectionSnapshot localReminders = realm.where(RemindersItem.class).findAll().createSnapshot(); for (RemindersItem localItem : localReminders) { if (!onlineReminders.contains(localItem)) { localItem.deleteFromRealm(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java index 24230c387..2c0666439 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java @@ -10,6 +10,7 @@ import com.habitrpg.android.habitica.models.user.User; import java.util.ArrayList; import java.util.List; +import io.realm.OrderedRealmCollectionSnapshot; import io.realm.Realm; import io.realm.RealmResults; import rx.Observable; @@ -43,7 +44,7 @@ public class RealmUserLocalRepository extends RealmBaseLocalRepository implement } private void removeOldTags(String userId, List onlineTags) { - RealmResults tags = realm.where(Tag.class).equalTo("userId", userId).findAll(); + OrderedRealmCollectionSnapshot tags = realm.where(Tag.class).equalTo("userId", userId).findAll().createSnapshot(); for (Tag tag : tags) { if (!onlineTags.contains(tag)) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.java index 0d80ef320..1f91b9e6b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.java @@ -81,7 +81,7 @@ public class ChecklistItem extends RealmObject { @Override public boolean equals(Object obj) { - if (obj.getClass().equals(ChecklistItem.class)) { + if (obj.getClass().equals(ChecklistItem.class) && this.id != null) { return this.id.equals(((ChecklistItem)obj).id); } return super.equals(obj); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java index 8bcde03d1..dea716737 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java @@ -215,9 +215,6 @@ public class PreferencesFragment extends BasePreferencesFragment implements userRepository.updateUser(user, "preferences.sound", newAudioTheme) .subscribe(habitRPGUser -> {}, throwable -> {}); - Preferences preferences = user.getPreferences(); - preferences.setSound(newAudioTheme); - soundManager.setSoundTheme(newAudioTheme); soundManager.preloadAllFiles();