From 67ebc1649db5170ca658c7e24daa8b839078f66d Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 5 Aug 2019 18:36:49 +0200 Subject: [PATCH] optimize saving user --- .../local/implementation/RealmUserLocalRepository.kt | 4 ++++ .../android/habitica/models/VersionedObject.kt | 6 ++++++ .../com/habitrpg/android/habitica/models/user/User.kt | 11 ++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/models/VersionedObject.kt diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt index 44248b708..e8906429e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt @@ -65,6 +65,10 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), if (user.lastCron?.before(oldUser.lastCron) == true) { user.needsCron = false } + } else { + if (oldUser.versionNumber >= user.versionNumber) { + return + } } } realm.executeTransaction { realm1 -> realm1.insertOrUpdate(user) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/VersionedObject.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/VersionedObject.kt new file mode 100644 index 000000000..e154a65e1 --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/VersionedObject.kt @@ -0,0 +1,6 @@ +package com.habitrpg.android.habitica.models + +interface VersionedObject { + + var versionNumber: Int +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt index 7deec9cae..6ccf799f0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt @@ -1,10 +1,7 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName -import com.habitrpg.android.habitica.models.Avatar -import com.habitrpg.android.habitica.models.PushDevice -import com.habitrpg.android.habitica.models.QuestAchievement -import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.* import com.habitrpg.android.habitica.models.invitations.Invitations import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.social.UserParty @@ -16,7 +13,7 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import java.util.* -open class User : RealmObject(), Avatar { +open class User : RealmObject(), Avatar, VersionedObject { @Ignore var tasks: TaskList? = null @@ -57,6 +54,10 @@ open class User : RealmObject(), Avatar { test.userID = id } } + + @SerializedName("_v") + override var versionNumber: Int = 0 + var balance: Double = 0.toDouble() private var stats: Stats? = null var inbox: Inbox? = null