mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
Fix world state API call
This commit is contained in:
parent
52fe568d29
commit
0555a0d578
15 changed files with 129 additions and 123 deletions
|
|
@ -357,6 +357,6 @@ public interface ApiService {
|
|||
@POST("user/allocate-bulk")
|
||||
Observable<HabitResponse<Stats>> bulkAllocatePoints(@Body Map<String, Map<String, Integer>> stats);
|
||||
|
||||
@POST("world-state")
|
||||
@GET("world-state")
|
||||
Observable<HabitResponse<WorldState>> getWorldState();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,16 +13,17 @@ import rx.functions.Action1
|
|||
|
||||
internal abstract class ContentRepositoryImpl<T : ContentLocalRepository>(localRepository: T, apiClient: ApiClient) : BaseRepositoryImpl<T>(localRepository, apiClient), ContentRepository {
|
||||
|
||||
private var lastContentSync = Date()
|
||||
private var lastWorldStateSync = Date()
|
||||
private var lastContentSync = 0L
|
||||
private var lastWorldStateSync = 0L
|
||||
|
||||
override fun retrieveContent(): Observable<ContentResult> {
|
||||
return retrieveContent(false)
|
||||
}
|
||||
|
||||
override fun retrieveContent(forced: Boolean): Observable<ContentResult> {
|
||||
return if (forced || Date().time - this.lastContentSync.time > 3600000) {
|
||||
lastContentSync = Date()
|
||||
val now = Date().time
|
||||
return if (forced || now - this.lastContentSync > 3600000) {
|
||||
lastContentSync = now
|
||||
apiClient.content.doOnNext({ localRepository.saveContent(it) })
|
||||
} else {
|
||||
Observable.just(null)
|
||||
|
|
@ -30,8 +31,9 @@ internal abstract class ContentRepositoryImpl<T : ContentLocalRepository>(localR
|
|||
}
|
||||
|
||||
override fun retrieveWorldState(): Observable<WorldState> {
|
||||
return if (Date().time - this.lastWorldStateSync.time > 3600000) {
|
||||
lastWorldStateSync = Date()
|
||||
val now = Date().time
|
||||
return if (now - this.lastWorldStateSync > 3600000) {
|
||||
lastWorldStateSync = now
|
||||
apiClient.worldState.doOnNext({ localRepository.saveWorldState(it) })
|
||||
} else {
|
||||
Observable.just(null)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.habitrpg.android.habitica.models.social.Challenge
|
|||
import com.habitrpg.android.habitica.models.social.ChatMessage
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmResults
|
||||
import rx.Observable
|
||||
import rx.functions.Action1
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.models.Skill
|
|||
import com.habitrpg.android.habitica.models.inventory.Customization
|
||||
import com.habitrpg.android.habitica.models.inventory.CustomizationSet
|
||||
import com.habitrpg.android.habitica.models.responses.SkillResponse
|
||||
import com.habitrpg.android.habitica.models.responses.TaskScoringResult
|
||||
import com.habitrpg.android.habitica.models.responses.UnlockResponse
|
||||
import com.habitrpg.android.habitica.models.social.ChatMessage
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
package com.habitrpg.android.habitica.data.local;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.realm.Realm;
|
||||
import io.realm.RealmObject;
|
||||
|
||||
public interface BaseLocalRepository {
|
||||
|
||||
void close();
|
||||
|
||||
void executeTransaction(Realm.Transaction transaction);
|
||||
|
||||
<T extends RealmObject> T getUnmanagedCopy(T object);
|
||||
<T extends RealmObject> List<T> getUnmanagedCopy(List<T> list);
|
||||
|
||||
<T extends RealmObject>void save(List<T> objects);
|
||||
<T extends RealmObject>void save(T object);
|
||||
|
||||
boolean isClosed();
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.habitrpg.android.habitica.data.local
|
||||
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmObject
|
||||
|
||||
interface BaseLocalRepository {
|
||||
|
||||
val isClosed: Boolean
|
||||
|
||||
fun close()
|
||||
|
||||
fun executeTransaction(transaction: () -> Unit)
|
||||
fun executeTransaction(transaction: Realm.Transaction)
|
||||
|
||||
fun <T : RealmObject> getUnmanagedCopy(managedObject: T): T
|
||||
fun <T : RealmObject> getUnmanagedCopy(list: List<T>): List<T>
|
||||
|
||||
fun <T : RealmObject> save(objects: List<T>)
|
||||
fun <T : RealmObject> save(`object`: T)
|
||||
}
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
package com.habitrpg.android.habitica.data.local.implementation;
|
||||
|
||||
import com.habitrpg.android.habitica.data.local.BaseLocalRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.realm.Realm;
|
||||
import io.realm.RealmObject;
|
||||
|
||||
public abstract class RealmBaseLocalRepository implements BaseLocalRepository {
|
||||
|
||||
Realm realm;
|
||||
|
||||
RealmBaseLocalRepository(Realm realm) {
|
||||
this.realm = realm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
realm.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeTransaction(Realm.Transaction transaction) {
|
||||
realm.executeTransaction(transaction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends RealmObject> T getUnmanagedCopy(T object) {
|
||||
if (object.isManaged() && object.isValid()) {
|
||||
return realm.copyFromRealm(object);
|
||||
} else {
|
||||
return object;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends RealmObject> List<T> getUnmanagedCopy(List<T> list) {
|
||||
return realm.copyFromRealm(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends RealmObject> void save(T object) {
|
||||
realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(object));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() {
|
||||
return realm.isClosed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends RealmObject> void save(List<T> objects) {
|
||||
realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(objects));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.habitrpg.android.habitica.data.local.implementation
|
||||
|
||||
import com.habitrpg.android.habitica.data.local.BaseLocalRepository
|
||||
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmObject
|
||||
|
||||
abstract class RealmBaseLocalRepository internal constructor(protected var realm: Realm) : BaseLocalRepository {
|
||||
|
||||
override val isClosed: Boolean
|
||||
get() = realm.isClosed
|
||||
|
||||
override fun close() {
|
||||
realm.close()
|
||||
}
|
||||
|
||||
override fun executeTransaction(transaction: () -> Unit) {
|
||||
realm.executeTransaction {
|
||||
transaction()
|
||||
}
|
||||
}
|
||||
|
||||
override fun executeTransaction(transaction: Realm.Transaction) {
|
||||
realm.executeTransaction(transaction)
|
||||
}
|
||||
|
||||
override fun <T : RealmObject> getUnmanagedCopy(managedObject: T): T {
|
||||
return if (managedObject.isManaged && managedObject.isValid) {
|
||||
realm.copyFromRealm(managedObject)
|
||||
} else {
|
||||
managedObject
|
||||
}
|
||||
}
|
||||
|
||||
override fun <T : RealmObject> getUnmanagedCopy(list: List<T>): List<T> {
|
||||
return realm.copyFromRealm(list)
|
||||
}
|
||||
|
||||
override fun <T : RealmObject> save(`object`: T) {
|
||||
realm.executeTransactionAsync { realm1 -> realm1.insertOrUpdate(`object`) }
|
||||
}
|
||||
|
||||
override fun <T : RealmObject> save(objects: List<T>) {
|
||||
realm.executeTransactionAsync { realm1 -> realm1.insertOrUpdate(objects) }
|
||||
}
|
||||
}
|
||||
|
|
@ -21,7 +21,7 @@ public class RealmChallengeLocalRepository extends RealmBaseLocalRepository impl
|
|||
|
||||
@Override
|
||||
public Observable<Challenge> getChallenge(String id) {
|
||||
return realm.where(Challenge.class)
|
||||
return getRealm().where(Challenge.class)
|
||||
.equalTo("id", id)
|
||||
.findFirstAsync()
|
||||
.asObservable()
|
||||
|
|
@ -36,7 +36,7 @@ public class RealmChallengeLocalRepository extends RealmBaseLocalRepository impl
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Challenge>> getChallenges() {
|
||||
return realm.where(Challenge.class)
|
||||
return getRealm().where(Challenge.class)
|
||||
.isNotNull("name")
|
||||
.findAllSortedAsync("official", Sort.DESCENDING, "createdAt", Sort.DESCENDING)
|
||||
.asObservable()
|
||||
|
|
@ -45,7 +45,7 @@ public class RealmChallengeLocalRepository extends RealmBaseLocalRepository impl
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Challenge>> getUserChallenges(String userId) {
|
||||
return realm.where(Challenge.class)
|
||||
return getRealm().where(Challenge.class)
|
||||
.isNotNull("name")
|
||||
.equalTo("isParticipating", true)
|
||||
.findAllSortedAsync("official", Sort.DESCENDING, "createdAt", Sort.DESCENDING)
|
||||
|
|
@ -55,23 +55,23 @@ public class RealmChallengeLocalRepository extends RealmBaseLocalRepository impl
|
|||
|
||||
@Override
|
||||
public void setParticipating(Challenge challenge, boolean isParticipating) {
|
||||
realm.executeTransaction(realm1 -> challenge.isParticipating = isParticipating);
|
||||
getRealm().executeTransaction(realm1 -> challenge.isParticipating = isParticipating);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveChallenges(List<Challenge> onlineChallenges) {
|
||||
OrderedRealmCollectionSnapshot<Challenge> localChallenges = realm.where(Challenge.class).findAll().createSnapshot();
|
||||
OrderedRealmCollectionSnapshot<Challenge> localChallenges = getRealm().where(Challenge.class).findAll().createSnapshot();
|
||||
List<Challenge> challengesToDelete = new ArrayList<>();
|
||||
for (Challenge localTask : localChallenges) {
|
||||
if (!onlineChallenges.contains(localTask)) {
|
||||
challengesToDelete.add(localTask);
|
||||
}
|
||||
}
|
||||
realm.executeTransaction(realm1 -> {
|
||||
getRealm().executeTransaction(realm1 -> {
|
||||
for (Challenge localTask : challengesToDelete) {
|
||||
localTask.deleteFromRealm();
|
||||
}
|
||||
});
|
||||
realm.executeTransaction(realm1 -> realm1.insertOrUpdate(onlineChallenges));
|
||||
getRealm().executeTransaction(realm1 -> realm1.insertOrUpdate(onlineChallenges));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.data.local.implementation
|
|||
import com.habitrpg.android.habitica.data.local.ContentLocalRepository
|
||||
import com.habitrpg.android.habitica.models.ContentResult
|
||||
import com.habitrpg.android.habitica.models.WorldState
|
||||
import com.habitrpg.android.habitica.models.inventory.Quest
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
|
||||
import io.realm.Realm
|
||||
|
|
@ -32,10 +33,15 @@ internal open class RealmContentLocalRepository(realm: Realm) : RealmBaseLocalRe
|
|||
}
|
||||
|
||||
override fun saveWorldState(worldState: WorldState) {
|
||||
val tavern = realm.where(Group::class.java)
|
||||
val tavern = getUnmanagedCopy(realm.where(Group::class.java)
|
||||
.equalTo("id", Group.TAVERN_ID)
|
||||
.findFirst() ?: Group()
|
||||
tavern.id = Group.TAVERN_ID
|
||||
.findFirst() ?: Group())
|
||||
if (!tavern.isManaged) {
|
||||
tavern.id = Group.TAVERN_ID
|
||||
}
|
||||
if (tavern.quest == null) {
|
||||
tavern.quest = Quest()
|
||||
}
|
||||
tavern.quest?.active = worldState.worldBossActive
|
||||
tavern.quest?.key = worldState.worldBossKey
|
||||
tavern.quest?.progress = worldState.progress
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ public class RealmCustomizationLocalRepository extends RealmContentLocalReposito
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Customization>> getCustomizations(String type, String category, boolean onlyAvailable) {
|
||||
RealmQuery<Customization> query = realm.where(Customization.class)
|
||||
RealmQuery<Customization> query = getRealm().where(Customization.class)
|
||||
.equalTo("type", type)
|
||||
.equalTo("category", category);
|
||||
if (onlyAvailable) {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class RealmFAQLocalRepository extends RealmContentLocalRepository impleme
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<FAQArticle>> getArticles() {
|
||||
return realm.where(FAQArticle.class)
|
||||
return getRealm().where(FAQArticle.class)
|
||||
.findAll()
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<QuestContent> getQuestContent(String key) {
|
||||
return realm.where(QuestContent.class).equalTo("key", key).findFirstAsync()
|
||||
return getRealm().where(QuestContent.class).equalTo("key", key).findFirstAsync()
|
||||
.asObservable()
|
||||
.filter(realmObject -> realmObject.isLoaded())
|
||||
.cast(QuestContent.class);
|
||||
|
|
@ -48,7 +48,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Equipment>> getEquipment(List<String> searchedKeys) {
|
||||
return realm.where(Equipment.class)
|
||||
return getRealm().where(Equipment.class)
|
||||
.in("key", searchedKeys.toArray(new String[0]))
|
||||
.findAll()
|
||||
.asObservable()
|
||||
|
|
@ -57,7 +57,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public long getArmoireRemainingCount() {
|
||||
return realm.where(Equipment.class)
|
||||
return getRealm().where(Equipment.class)
|
||||
.equalTo("klass", "armoire")
|
||||
.beginGroup()
|
||||
.equalTo("owned", false)
|
||||
|
|
@ -69,7 +69,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Equipment>> getOwnedEquipment(String type) {
|
||||
return realm.where(Equipment.class)
|
||||
return getRealm().where(Equipment.class)
|
||||
.equalTo("type", type)
|
||||
.equalTo("owned", true)
|
||||
.findAll()
|
||||
|
|
@ -79,7 +79,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Equipment>> getOwnedEquipment() {
|
||||
return realm.where(Equipment.class)
|
||||
return getRealm().where(Equipment.class)
|
||||
.equalTo("owned", true)
|
||||
.findAll()
|
||||
.asObservable()
|
||||
|
|
@ -92,7 +92,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
return Observable.empty();
|
||||
}
|
||||
|
||||
RealmQuery<? extends Item> query = realm.where(itemClass);
|
||||
RealmQuery<? extends Item> query = getRealm().where(itemClass);
|
||||
if (SpecialItem.class.isAssignableFrom(itemClass)) {
|
||||
if (user != null && user.getPurchased() != null && user.getPurchased().getPlan() != null) {
|
||||
SpecialItem mysticItem;
|
||||
|
|
@ -138,7 +138,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<Equipment> getEquipment(String key) {
|
||||
return realm.where(Equipment.class)
|
||||
return getRealm().where(Equipment.class)
|
||||
.equalTo("key", key)
|
||||
.findFirstAsync()
|
||||
.asObservable()
|
||||
|
|
@ -148,7 +148,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Mount>> getMounts() {
|
||||
return realm.where(Mount.class)
|
||||
return getRealm().where(Mount.class)
|
||||
.findAllSorted("animalGroup", Sort.ASCENDING, "animal", Sort.ASCENDING)
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded);
|
||||
|
|
@ -156,7 +156,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Mount>> getMounts(String type, String group) {
|
||||
return realm.where(Mount.class)
|
||||
return getRealm().where(Mount.class)
|
||||
.equalTo("animalGroup", group)
|
||||
.equalTo("animal", type)
|
||||
.findAll()
|
||||
|
|
@ -166,7 +166,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Mount>> getOwnedMounts() {
|
||||
return realm.where(Mount.class)
|
||||
return getRealm().where(Mount.class)
|
||||
.equalTo("owned", true)
|
||||
.findAllSorted("animalGroup", Sort.ASCENDING, "animal", Sort.ASCENDING)
|
||||
.asObservable()
|
||||
|
|
@ -179,7 +179,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
animalGroup = "";
|
||||
}
|
||||
animalGroup = animalGroup.replace("pets", "mounts").replace("Pets", "Mounts");
|
||||
return realm.where(Mount.class)
|
||||
return getRealm().where(Mount.class)
|
||||
.equalTo("animalGroup", animalGroup)
|
||||
.equalTo("animal", animalType)
|
||||
.equalTo("owned", true)
|
||||
|
|
@ -190,7 +190,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Pet>> getPets() {
|
||||
return realm.where(Pet.class)
|
||||
return getRealm().where(Pet.class)
|
||||
.findAllSorted("animalGroup", Sort.ASCENDING, "animal", Sort.ASCENDING)
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded);
|
||||
|
|
@ -198,7 +198,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Pet>> getPets(String type, String group) {
|
||||
return realm.where(Pet.class)
|
||||
return getRealm().where(Pet.class)
|
||||
.equalTo("animalGroup", group)
|
||||
.equalTo("animal", type)
|
||||
.findAll()
|
||||
|
|
@ -208,7 +208,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Pet>> getOwnedPets() {
|
||||
return realm.where(Pet.class)
|
||||
return getRealm().where(Pet.class)
|
||||
.greaterThan("trained", 0)
|
||||
.findAllSorted("animalGroup", Sort.ASCENDING, "animal", Sort.ASCENDING)
|
||||
.asObservable()
|
||||
|
|
@ -217,7 +217,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Pet>> getOwnedPets(String type, String group) {
|
||||
return realm.where(Pet.class)
|
||||
return getRealm().where(Pet.class)
|
||||
.equalTo("animalGroup", group)
|
||||
.equalTo("animal", type)
|
||||
.greaterThan("trained", 0)
|
||||
|
|
@ -238,7 +238,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public void changeOwnedCount(Item item, Integer amountToAdd) {
|
||||
realm.executeTransaction(realm1 -> item.setOwned(item.getOwned()+amountToAdd));
|
||||
getRealm().executeTransaction(realm1 -> item.setOwned(item.getOwned()+amountToAdd));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -257,15 +257,15 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
case "quests":
|
||||
itemClass = QuestContent.class;
|
||||
}
|
||||
return realm.where(itemClass).equalTo("key", key).findFirstAsync().asObservable()
|
||||
return getRealm().where(itemClass).equalTo("key", key).findFirstAsync().asObservable()
|
||||
.filter(realmObject -> realmObject.isLoaded())
|
||||
.cast(Item.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrementMysteryItemCount(User user) {
|
||||
SpecialItem item = realm.where(SpecialItem.class).equalTo("isMysteryItem", true).findFirst();
|
||||
realm.executeTransaction(realm1 -> {
|
||||
SpecialItem item = getRealm().where(SpecialItem.class).equalTo("isMysteryItem", true).findFirst();
|
||||
getRealm().executeTransaction(realm1 -> {
|
||||
if (item != null && item.isValid()) {
|
||||
item.setOwned(item.getOwned() - 1);
|
||||
}
|
||||
|
|
@ -277,7 +277,7 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<ShopItem>> getInAppRewards() {
|
||||
return realm.where(ShopItem.class)
|
||||
return getRealm().where(ShopItem.class)
|
||||
.findAllAsync()
|
||||
.asObservable()
|
||||
.filter(RealmResults::isLoaded);
|
||||
|
|
@ -285,14 +285,14 @@ public class RealmInventoryLocalRepository extends RealmContentLocalRepository i
|
|||
|
||||
@Override
|
||||
public void saveInAppRewards(List<ShopItem> onlineItems) {
|
||||
OrderedRealmCollectionSnapshot<ShopItem> localItems = realm.where(ShopItem.class).findAll().createSnapshot();
|
||||
realm.executeTransaction(realm1 -> {
|
||||
OrderedRealmCollectionSnapshot<ShopItem> localItems = getRealm().where(ShopItem.class).findAll().createSnapshot();
|
||||
getRealm().executeTransaction(realm1 -> {
|
||||
for (ShopItem localItem : localItems) {
|
||||
if (!onlineItems.contains(localItem)) {
|
||||
localItem.deleteFromRealm();
|
||||
}
|
||||
}
|
||||
realm.insertOrUpdate(onlineItems);
|
||||
getRealm().insertOrUpdate(onlineItems);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,12 +18,12 @@ public class RealmTagLocalRepository extends RealmBaseLocalRepository implements
|
|||
|
||||
@Override
|
||||
public Observable<RealmResults<Tag>> getTags(String userId) {
|
||||
return realm.where(Tag.class).equalTo("userId", userId).findAll().asObservable();
|
||||
return getRealm().where(Tag.class).equalTo("userId", userId).findAll().asObservable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeOldTags(List<Tag> onlineTags, String userID) {
|
||||
OrderedRealmCollectionSnapshot<Tag> localTags = realm.where(Tag.class).equalTo("userId", userID).findAll().createSnapshot();
|
||||
OrderedRealmCollectionSnapshot<Tag> localTags = getRealm().where(Tag.class).equalTo("userId", userID).findAll().createSnapshot();
|
||||
for (Tag localTag : localTags) {
|
||||
if (!onlineTags.contains(localTag)) {
|
||||
localTag.deleteFromRealm();
|
||||
|
|
|
|||
|
|
@ -18,7 +18,16 @@ class WorldStateSerialization: JsonDeserializer<WorldState> {
|
|||
}
|
||||
state.worldBossActive = worldBossObject["active"].asBoolean
|
||||
state.worldBossKey = worldBossObject["key"].asString
|
||||
state.progress = context?.deserialize(worldBossObject["progress"], QuestProgress::class.java)
|
||||
if (worldBossObject.has("progress")) {
|
||||
val progress = QuestProgress()
|
||||
val progressObj = worldBossObject.getAsJsonObject("progress")
|
||||
if (progressObj.has("hp")) {
|
||||
progress.hp = progressObj["hp"].asDouble
|
||||
}
|
||||
if (progressObj.has("rage")) {
|
||||
progress.rage = progressObj["rage"].asDouble
|
||||
}
|
||||
}
|
||||
if (worldBossObject.has("extra")) {
|
||||
val extra = worldBossObject["extra"].asJsonObject
|
||||
if (extra.has("worldDmg")) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue