diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 1a26c1a0e..dabdf2e1e 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -15,7 +15,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' + classpath 'com.android.tools.build:gradle:4.2.1' classpath('com.noveogroup.android:check:1.2.5') { exclude module: 'checkstyle' exclude module: 'pmd-java' @@ -41,8 +41,8 @@ repositories { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //Networking - implementation 'com.squareup.okhttp3:okhttp:4.9.0' - implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0' + implementation 'com.squareup.okhttp3:okhttp:4.9.1' + implementation 'com.squareup.okhttp3:logging-interceptor:4.9.1' //REST API handling implementation('com.squareup.retrofit2:retrofit:2.9.0') { exclude module: 'okhttp' @@ -53,8 +53,8 @@ dependencies { implementation 'com.google.firebase:firebase-crashlytics:18.0.0' //Dependency Injection - implementation 'com.google.dagger:dagger:2.31.2' - kapt 'com.google.dagger:dagger-compiler:2.31.2' + implementation 'com.google.dagger:dagger:2.36' + kapt 'com.google.dagger:dagger-compiler:2.36' compileOnly 'javax.annotation:javax.annotation-api:1.3.2' compileOnly 'com.github.pengrad:jdk9-deps:1.0' //App Compatibility and Material Design @@ -63,15 +63,15 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.0' implementation 'androidx.legacy:legacy-preference-v14:1.0.0' // Markdown - implementation "io.noties.markwon:core:4.6.1" - implementation "io.noties.markwon:ext-strikethrough:4.6.1" - implementation "io.noties.markwon:image:4.6.1" - implementation "io.noties.markwon:recycler:4.6.1" - implementation "io.noties.markwon:html:4.6.1" + implementation "io.noties.markwon:core:4.6.2" + implementation "io.noties.markwon:ext-strikethrough:4.6.2" + implementation "io.noties.markwon:image:4.6.2" + implementation "io.noties.markwon:recycler:4.6.2" + implementation "io.noties.markwon:html:4.6.2" //Eventbus implementation 'org.greenrobot:eventbus:3.2.0' // IAP Handling / Verification - implementation 'org.solovyev.android:checkout:1.2.2' + implementation 'org.solovyev.android:checkout:1.2.3' //Facebook implementation('com.facebook.android:facebook-android-sdk:8.1.0') { transitive = true @@ -79,9 +79,9 @@ dependencies { implementation 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar' //RxJava implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' - implementation 'io.reactivex.rxjava3:rxjava:3.0.9' + implementation 'io.reactivex.rxjava3:rxjava:3.0.13' implementation 'io.reactivex.rxjava3:rxkotlin:3.0.1' - implementation 'io.reactivex.rxjava2:rxjava:2.2.19' + implementation 'io.reactivex.rxjava2:rxjava:2.2.21' implementation "com.github.akarnokd:rxjava3-bridge:3.0.0" //Analytics @@ -114,7 +114,7 @@ dependencies { implementation 'com.google.firebase:firebase-config:21.0.0' implementation 'com.google.firebase:firebase-perf:20.0.0' implementation 'com.google.android.gms:play-services-auth:19.0.0' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.10" implementation 'com.nex3z:flow-layout:1.2.2' implementation 'androidx.core:core-ktx:1.5.0' @@ -134,7 +134,7 @@ dependencies { android { compileSdkVersion 30 - buildToolsVersion '29.0.3' + buildToolsVersion '30.0.2' testOptions { unitTests { includeAndroidResources = true @@ -150,7 +150,7 @@ android { resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" versionCode 2960 - versionName "3.2.4.1" + versionName "3.3" } buildFeatures { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.kt index cb3a2215d..ec65f3742 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.kt @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.data -import io.realm.RealmObject +import com.habitrpg.android.habitica.models.BaseObject interface BaseRepository { @@ -8,6 +8,6 @@ interface BaseRepository { fun close() - fun getUnmanagedCopy(obj: T): T - fun getUnmanagedCopy(list: List): List + fun getUnmanagedCopy(obj: T): T + fun getUnmanagedCopy(list: List): List } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ChallengeRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ChallengeRepository.kt index 1a0ad4a4f..b95c5fb5b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ChallengeRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ChallengeRepository.kt @@ -5,14 +5,13 @@ import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface ChallengeRepository : BaseRepository { fun retrieveChallenges(page: Int = 0, memberOnly: Boolean): Flowable> - fun getChallenges(): Flowable> + fun getChallenges(): Flowable> fun getChallenge(challengeId: String): Flowable - fun getChallengeTasks(challengeId: String): Flowable> + fun getChallengeTasks(challengeId: String): Flowable> fun retrieveChallenge(challengeID: String): Flowable fun retrieveChallengeTasks(challengeID: String): Flowable @@ -31,7 +30,7 @@ interface ChallengeRepository : BaseRepository { addedTaskList: List, updatedTaskList: List, removedTaskList: List): Flowable fun deleteChallenge(challengeId: String): Flowable - fun getUserChallenges(userId: String? = null): Flowable> + fun getUserChallenges(userId: String? = null): Flowable> fun leaveChallenge(challenge: Challenge, keepTasks: String): Flowable @@ -39,6 +38,6 @@ interface ChallengeRepository : BaseRepository { fun joinChallenge(challenge: Challenge): Flowable fun getChallengepMembership(id: String): Flowable - fun getChallengeMemberships(): Flowable> + fun getChallengeMemberships(): Flowable> fun isChallengeMember(challengeID: String): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/CustomizationRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/CustomizationRepository.kt index 8f946aaf6..f1945094c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/CustomizationRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/CustomizationRepository.kt @@ -3,8 +3,7 @@ package com.habitrpg.android.habitica.data import com.habitrpg.android.habitica.models.inventory.Customization import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface CustomizationRepository : BaseRepository { - fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> + fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/FAQRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/FAQRepository.kt index ce59effda..76d0e6ca5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/FAQRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/FAQRepository.kt @@ -3,9 +3,8 @@ package com.habitrpg.android.habitica.data import com.habitrpg.android.habitica.models.FAQArticle import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface FAQRepository : BaseRepository { - fun getArticles(): Flowable> + fun getArticles(): Flowable> fun getArticle(position: Int): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt index ba85cb472..16596388c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt @@ -7,33 +7,32 @@ import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem import com.habitrpg.android.habitica.models.user.* import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface InventoryRepository : BaseRepository { fun getArmoireRemainingCount(): Long - fun getInAppRewards(): Flowable> - fun getOwnedEquipment(): Flowable> + fun getInAppRewards(): Flowable> + fun getOwnedEquipment(): Flowable> - fun getMounts(): Flowable> + fun getMounts(): Flowable> - fun getOwnedMounts(): Flowable> + fun getOwnedMounts(): Flowable> - fun getPets(): Flowable> + fun getPets(): Flowable> - fun getOwnedPets(): Flowable> + fun getOwnedPets(): Flowable> fun getQuestContent(key: String): Flowable - fun getQuestContent(keys: List): Flowable> + fun getQuestContent(keys: List): Flowable> - fun getEquipment(searchedKeys: List): Flowable> + fun getEquipment(searchedKeys: List): Flowable> fun retrieveInAppRewards(): Flowable> - fun getOwnedEquipment(type: String): Flowable> - fun getEquipmentType(type: String, set: String): Flowable> + fun getOwnedEquipment(type: String): Flowable> + fun getEquipmentType(type: String, set: String): Flowable> - fun getOwnedItems(itemType: String, includeZero: Boolean = false): Flowable> + fun getOwnedItems(itemType: String, includeZero: Boolean = false): Flowable> fun getOwnedItems(includeZero: Boolean = false): Flowable> fun getEquipment(key: String): Flowable @@ -41,8 +40,8 @@ interface InventoryRepository : BaseRepository { fun openMysteryItem(user: User?): Flowable fun saveEquipment(equipment: Equipment) - fun getMounts(type: String?, group: String?, color: String?): Flowable> - fun getPets(type: String?, group: String?, color: String?): Flowable> + fun getMounts(type: String?, group: String?, color: String?): Flowable> + fun getPets(type: String?, group: String?, color: String?): Flowable> fun updateOwnedEquipment(user: User) @@ -75,8 +74,8 @@ interface InventoryRepository : BaseRepository { fun purchaseItem(purchaseType: String, key: String, purchaseQuantity: Int): Flowable fun togglePinnedItem(item: ShopItem): Flowable> - fun getItems(itemClass: Class, keys: Array): Flowable> - fun getItems(itemClass: Class): Flowable> + fun getItems(itemClass: Class, keys: Array): Flowable> + fun getItems(itemClass: Class): Flowable> fun getLatestMysteryItem(): Flowable fun getItem(type: String, key: String): Flowable fun getAvailableLimitedItems(): Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt index 951ced677..3556496db 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt @@ -8,15 +8,14 @@ import com.habitrpg.android.habitica.models.social.* import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single -import io.realm.RealmResults import java.util.* interface SocialRepository : BaseRepository { - fun getPublicGuilds(): Flowable> + fun getPublicGuilds(): Flowable> - fun getUserGroups(type: String?): Flowable> + fun getUserGroups(type: String?): Flowable> fun retrieveGroupChat(groupId: String): Single> - fun getGroupChat(groupId: String): Flowable> + fun getGroupChat(groupId: String): Flowable> fun markMessagesSeen(seenGroupId: String) @@ -40,18 +39,18 @@ interface SocialRepository : BaseRepository { fun updateGroup(group: Group?, name: String?, description: String?, leader: String?, leaderCreateChallenge: Boolean?): Flowable fun retrieveGroups(type: String): Flowable> - fun getGroups(type: String): Flowable> + fun getGroups(type: String): Flowable> - fun getInboxMessages(replyToUserID: String?): Flowable> + fun getInboxMessages(replyToUserID: String?): Flowable> fun retrieveInboxMessages(uuid: String, page: Int): Flowable> fun retrieveInboxConversations(): Flowable> - fun getInboxConversations(): Flowable> + fun getInboxConversations(): Flowable> fun postPrivateMessage(recipientId: String, messageObject: HashMap): Flowable> fun postPrivateMessage(recipientId: String, message: String): Flowable> - fun getGroupMembers(id: String): Flowable> + fun getGroupMembers(id: String): Flowable> fun retrieveGroupMembers(id: String, includeAllPublicFields: Boolean): Flowable> fun inviteToGroup(id: String, inviteData: Map): Flowable @@ -85,7 +84,7 @@ interface SocialRepository : BaseRepository { fun transferGems(giftedID: String, amount: Int): Flowable fun getGroupMembership(id: String): Flowable - fun getGroupMemberships(): Flowable> + fun getGroupMemberships(): Flowable> fun getChatmessage(messageID: String): Flowable fun blockMember(userID: String): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TagRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TagRepository.kt index b93950bb8..4727ddf56 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TagRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TagRepository.kt @@ -4,12 +4,11 @@ import com.habitrpg.android.habitica.models.Tag import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single -import io.realm.RealmResults interface TagRepository : BaseRepository { - fun getTags(): Flowable> - fun getTags(userId: String): Flowable> + fun getTags(): Flowable> + fun getTags(userId: String): Flowable> fun createTag(tag: Tag): Flowable fun updateTag(tag: Tag): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt index fabe38ec6..17f19b156 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.data +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData import com.habitrpg.android.habitica.models.responses.TaskScoringResult @@ -11,15 +12,13 @@ import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.core.Single -import io.realm.Realm -import io.realm.RealmResults import java.util.* interface TaskRepository : BaseRepository { - fun getTasks(taskType: String, userID: String): Flowable> - fun getTasks(userId: String): Flowable> - fun getCurrentUserTasks(taskType: String): Flowable> - fun getTasksOfType(taskType: String): Flowable> + fun getTasks(taskType: String, userID: String): Flowable> + fun getTasks(userId: String): Flowable> + fun getCurrentUserTasks(taskType: String): Flowable> + fun getTasksOfType(taskType: String): Flowable> fun saveTasks(userId: String, order: TasksOrder, tasks: TaskList) fun retrieveTasks(userId: String, tasksOrder: TasksOrder): Flowable @@ -42,7 +41,7 @@ interface TaskRepository : BaseRepository { fun saveReminder(remindersItem: RemindersItem) - fun modify(obj: T, transaction: (T) -> Unit) + fun modify(obj: T, transaction: (T) -> Unit) fun swapTaskPosition(firstPosition: Int, secondPosition: Int) @@ -62,6 +61,6 @@ interface TaskRepository : BaseRepository { fun retrieveCompletedTodos(userId: String): Flowable fun syncErroredTasks(): Single> fun unlinkAllTasks(challengeID: String?, keepOption: String): Flowable - fun getTasksForChallenge(challengeID: String?): Flowable> + fun getTasksForChallenge(challengeID: String?): Flowable> fun bulkScoreTasks(data: List>): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TutorialRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TutorialRepository.kt index 0703472e8..83412b1a6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TutorialRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TutorialRepository.kt @@ -2,11 +2,10 @@ package com.habitrpg.android.habitica.data import com.habitrpg.android.habitica.models.TutorialStep import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface TutorialRepository : BaseRepository { fun getTutorialStep(key: String): Flowable - fun getTutorialSteps(keys: List): Flowable> + fun getTutorialSteps(keys: List): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.kt index e7222f05a..6304c612c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/UserRepository.kt @@ -16,7 +16,6 @@ import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe -import io.realm.RealmResults interface UserRepository : BaseRepository { fun getUser(): Flowable @@ -34,9 +33,9 @@ interface UserRepository : BaseRepository { fun sleep(user: User): Flowable - fun getSkills(user: User): Flowable> + fun getSkills(user: User): Flowable> - fun getSpecialItems(user: User): Flowable> + fun getSpecialItems(user: User): Flowable> fun useSkill(key: String, target: String?, taskId: String): Flowable fun useSkill(key: String, target: String?): Flowable @@ -76,14 +75,14 @@ interface UserRepository : BaseRepository { fun useCustomization(type: String, category: String?, identifier: String): Flowable fun retrieveAchievements(): Flowable> - fun getAchievements(): Flowable> - fun getQuestAchievements(): Flowable> + fun getAchievements(): Flowable> + fun getQuestAchievements(): Flowable> fun getUserQuestStatus(): Flowable fun reroll(): Flowable fun retrieveTeamPlans(): Flowable> - fun getTeamPlans(): Flowable> + fun getTeamPlans(): Flowable> fun retrieveTeamPlan(teamID: String): Flowable fun getTeamPlan(teamID: String): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt index 67535284b..a8283dfe0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt @@ -3,8 +3,7 @@ package com.habitrpg.android.habitica.data.implementation import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.BaseRepository import com.habitrpg.android.habitica.data.local.BaseLocalRepository - -import io.realm.RealmObject +import com.habitrpg.android.habitica.models.BaseObject abstract class BaseRepositoryImpl(protected val localRepository: T, protected val apiClient: ApiClient, protected val userID: String = "") : BaseRepository { @@ -12,14 +11,14 @@ abstract class BaseRepositoryImpl(protected val localRe this.localRepository.close() } - override fun getUnmanagedCopy(list: List): List { + override fun getUnmanagedCopy(list: List): List { return localRepository.getUnmanagedCopy(list) } override val isClosed: Boolean get() = localRepository.isClosed - override fun getUnmanagedCopy(obj: T): T { + override fun getUnmanagedCopy(obj: T): T { return localRepository.getUnmanagedCopy(obj) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt index effa4d57b..c6ff29711 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt @@ -10,7 +10,6 @@ import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList import com.habitrpg.android.habitica.models.tasks.TasksOrder import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults class ChallengeRepositoryImpl(localRepository: ChallengeLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), ChallengeRepository { @@ -23,7 +22,7 @@ class ChallengeRepositoryImpl(localRepository: ChallengeLocalRepository, apiClie return localRepository.getChallengeMembership(userID, id) } - override fun getChallengeMemberships(): Flowable> { + override fun getChallengeMemberships(): Flowable> { return localRepository.getChallengeMemberships(userID) } @@ -31,7 +30,7 @@ class ChallengeRepositoryImpl(localRepository: ChallengeLocalRepository, apiClie return localRepository.getChallenge(challengeId) } - override fun getChallengeTasks(challengeId: String): Flowable> { + override fun getChallengeTasks(challengeId: String): Flowable> { return localRepository.getTasks(challengeId) } @@ -114,11 +113,11 @@ class ChallengeRepositoryImpl(localRepository: ChallengeLocalRepository, apiClie return apiClient.deleteChallenge(challengeId) } - override fun getChallenges(): Flowable> { + override fun getChallenges(): Flowable> { return localRepository.challenges } - override fun getUserChallenges(userId: String?): Flowable> { + override fun getUserChallenges(userId: String?): Flowable> { return localRepository.getUserChallenges(userId ?: userID) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt index 2b68b5a51..f908b7987 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt @@ -6,11 +6,10 @@ import com.habitrpg.android.habitica.data.local.CustomizationLocalRepository import com.habitrpg.android.habitica.models.inventory.Customization import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults class CustomizationRepositoryImpl(localRepository: CustomizationLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), CustomizationRepository { - override fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> { + override fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> { return localRepository.getCustomizations(type, category, onlyAvailable) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt index 8f9127a7a..608f74550 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt @@ -6,7 +6,6 @@ import com.habitrpg.android.habitica.data.local.FAQLocalRepository import com.habitrpg.android.habitica.models.FAQArticle import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults class FAQRepositoryImpl(localRepository: FAQLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), FAQRepository { @@ -14,7 +13,7 @@ class FAQRepositoryImpl(localRepository: FAQLocalRepository, apiClient: ApiClien return localRepository.getArticle(position) } - override fun getArticles(): Flowable> { + override fun getArticles(): Flowable> { return localRepository.articles } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt index 4190f1ace..8ff3b430d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt @@ -11,10 +11,9 @@ import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem import com.habitrpg.android.habitica.models.user.* import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClient: ApiClient, userID: String, var appConfigManager: AppConfigManager) : BaseRepositoryImpl(localRepository, apiClient, userID), InventoryRepository { - override fun getQuestContent(keys: List): Flowable> { + override fun getQuestContent(keys: List): Flowable> { return localRepository.getQuestContent(keys) } @@ -22,7 +21,7 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie return localRepository.getQuestContent(key) } - override fun getEquipment(searchedKeys: List): Flowable> { + override fun getEquipment(searchedKeys: List): Flowable> { return localRepository.getEquipment(searchedKeys) } @@ -30,7 +29,7 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie return localRepository.getArmoireRemainingCount() } - override fun getInAppRewards(): Flowable> { + override fun getInAppRewards(): Flowable> { return localRepository.getInAppRewards() } @@ -38,19 +37,19 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie return apiClient.retrieveInAppRewards().doOnNext { localRepository.saveInAppRewards(it) } } - override fun getOwnedEquipment(type: String): Flowable> { + override fun getOwnedEquipment(type: String): Flowable> { return localRepository.getOwnedEquipment(type) } - override fun getOwnedEquipment(): Flowable> { + override fun getOwnedEquipment(): Flowable> { return localRepository.getOwnedEquipment() } - override fun getEquipmentType(type: String, set: String): Flowable> { + override fun getEquipmentType(type: String, set: String): Flowable> { return localRepository.getEquipmentType(type, set) } - override fun getOwnedItems(itemType: String, includeZero: Boolean): Flowable> { + override fun getOwnedItems(itemType: String, includeZero: Boolean): Flowable> { return localRepository.getOwnedItems(itemType, userID, includeZero) } @@ -58,11 +57,11 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie return localRepository.getOwnedItems(userID, includeZero) } - override fun getItems(itemClass: Class, keys: Array): Flowable> { + override fun getItems(itemClass: Class, keys: Array): Flowable> { return localRepository.getItems(itemClass, keys) } - override fun getItems(itemClass: Class): Flowable> { + override fun getItems(itemClass: Class): Flowable> { return localRepository.getItems(itemClass) } @@ -86,27 +85,27 @@ class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClie localRepository.save(equipment) } - override fun getMounts(): Flowable> { + override fun getMounts(): Flowable> { return localRepository.getMounts() } - override fun getMounts(type: String?, group: String?, color: String?): Flowable> { + override fun getMounts(type: String?, group: String?, color: String?): Flowable> { return localRepository.getMounts(type, group, color) } - override fun getOwnedMounts(): Flowable> { + override fun getOwnedMounts(): Flowable> { return localRepository.getOwnedMounts(userID) } - override fun getPets(): Flowable> { + override fun getPets(): Flowable> { return localRepository.getPets() } - override fun getPets(type: String?, group: String?, color: String?): Flowable> { + override fun getPets(type: String?, group: String?, color: String?): Flowable> { return localRepository.getPets(type, group, color) } - override fun getOwnedPets(): Flowable> { + override fun getOwnedPets(): Flowable> { return localRepository.getOwnedPets(userID) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt index 518e71a8d..b8299ff5b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt @@ -13,7 +13,6 @@ import com.habitrpg.android.habitica.models.social.* import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single -import io.realm.RealmResults import java.util.* import kotlin.collections.HashMap @@ -49,7 +48,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap return localRepository.getGroupMembership(userID, id) } - override fun getGroupMemberships(): Flowable> { + override fun getGroupMemberships(): Flowable> { return localRepository.getGroupMemberships(userID) } @@ -64,7 +63,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap .doOnSuccess { localRepository.saveChatMessages(groupId, it) } } - override fun getGroupChat(groupId: String): Flowable> { + override fun getGroupChat(groupId: String): Flowable> { return localRepository.getGroupChat(groupId) } @@ -199,13 +198,13 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap } } - override fun getGroups(type: String): Flowable> = localRepository.getGroups(type) + override fun getGroups(type: String): Flowable> = localRepository.getGroups(type) - override fun getPublicGuilds(): Flowable> = localRepository.getPublicGuilds() + override fun getPublicGuilds(): Flowable> = localRepository.getPublicGuilds() - override fun getInboxConversations(): Flowable> = localRepository.getInboxConversation(userID) + override fun getInboxConversations(): Flowable> = localRepository.getInboxConversation(userID) - override fun getInboxMessages(replyToUserID: String?): Flowable> = localRepository.getInboxMessages(userID, replyToUserID) + override fun getInboxMessages(replyToUserID: String?): Flowable> = localRepository.getInboxMessages(userID, replyToUserID) override fun retrieveInboxMessages(uuid: String, page: Int): Flowable> { return apiClient.retrieveInboxMessages(uuid, page).doOnNext { messages -> @@ -233,7 +232,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap return postPrivateMessage(recipientId, messageObject) } - override fun getGroupMembers(id: String): Flowable> = localRepository.getGroupMembers(id) + override fun getGroupMembers(id: String): Flowable> = localRepository.getGroupMembers(id) override fun retrieveGroupMembers(id: String, includeAllPublicFields: Boolean): Flowable> { return apiClient.getGroupMembers(id, includeAllPublicFields) @@ -271,7 +270,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap } } - override fun getUserGroups(type: String?): Flowable> = localRepository.getUserGroups(userID, type) + override fun getUserGroups(type: String?): Flowable> = localRepository.getUserGroups(userID, type) override fun acceptQuest(user: User?, partyId: String): Flowable { return apiClient.acceptQuest(partyId) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TagRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TagRepositoryImpl.kt index 1ec15344d..319b94da5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TagRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TagRepositoryImpl.kt @@ -6,16 +6,15 @@ import com.habitrpg.android.habitica.data.local.TagLocalRepository import com.habitrpg.android.habitica.models.Tag import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single -import io.realm.RealmResults class TagRepositoryImpl(localRepository: TagLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), TagRepository { - override fun getTags(): Flowable> { + override fun getTags(): Flowable> { return getTags(userID) } - override fun getTags(userId: String): Flowable> { + override fun getTags(userId: String): Flowable> { return localRepository.getTags(userId) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt index e6b607356..6adabe0a0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt @@ -7,6 +7,7 @@ import com.habitrpg.android.habitica.data.local.TaskLocalRepository import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.interactors.ScoreTaskLocallyInteractor +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData import com.habitrpg.android.habitica.models.responses.TaskDirection @@ -19,27 +20,26 @@ import com.habitrpg.android.habitica.proxy.AnalyticsManager import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.core.Single -import io.realm.RealmResults import java.text.SimpleDateFormat import java.util.* class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiClient, userID: String, val appConfigManager: AppConfigManager, val analyticsManager: AnalyticsManager) : BaseRepositoryImpl(localRepository, apiClient, userID), TaskRepository { - override fun getTasksOfType(taskType: String): Flowable> = getTasks(taskType, userID) + override fun getTasksOfType(taskType: String): Flowable> = getTasks(taskType, userID) private var lastTaskAction: Long = 0 - override fun getTasks(taskType: String, userID: String): Flowable> = + override fun getTasks(taskType: String, userID: String): Flowable> = this.localRepository.getTasks(taskType, userID) - override fun getTasks(userId: String): Flowable> = + override fun getTasks(userId: String): Flowable> = this.localRepository.getTasks(userId) - override fun getCurrentUserTasks(taskType: String): Flowable> = + override fun getCurrentUserTasks(taskType: String): Flowable> = this.localRepository.getTasks(taskType, userID) - override fun saveTasks(ownerID: String, order: TasksOrder, tasks: TaskList) { - localRepository.saveTasks(ownerID, order, tasks) + override fun saveTasks(userId: String, order: TasksOrder, tasks: TaskList) { + localRepository.saveTasks(userId, order, tasks) } override fun retrieveTasks(userId: String, tasksOrder: TasksOrder): Flowable { @@ -154,10 +154,10 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli } } res._tmp?.drop?.key?.let { key -> - val type = when(res._tmp?.drop?.type?.toLowerCase(Locale.US)) { + val type = when(res._tmp?.drop?.type?.lowercase(Locale.US)) { "hatchingpotion" -> "hatchingPotions" "egg" -> "eggs" - else -> res._tmp?.drop?.type?.toLowerCase(Locale.US) + else -> res._tmp?.drop?.type?.lowercase(Locale.US) } var item = it.where(OwnedItem::class.java).equalTo("itemType", type).equalTo("key", key).findFirst() if (item == null) { @@ -175,7 +175,7 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli stats?.exp = res.exp stats?.mp = res.mp stats?.gp = res.gp - stats?.lvl = res.lvl.toInt() + stats?.lvl = res.lvl bgUser.party?.quest?.progress?.up = (bgUser.party?.quest?.progress?.up ?: 0F) + (res._tmp?.quest?.progressDelta?.toFloat() ?: 0F) bgUser.stats = stats @@ -278,7 +278,7 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli localRepository.saveReminder(remindersItem) } - override fun modify(obj: T, transaction: (T) -> Unit) { + override fun modify(obj: T, transaction: (T) -> Unit) { localRepository.modify(obj, transaction) } @@ -330,7 +330,7 @@ class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiCli return apiClient.unlinkAllTasks(challengeID, keepOption) } - override fun getTasksForChallenge(challengeID: String?): Flowable> { + override fun getTasksForChallenge(challengeID: String?): Flowable> { return localRepository.getTasksForChallenge(challengeID, userID) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TutorialRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TutorialRepositoryImpl.kt index 3aa383e4d..283fc70e8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TutorialRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TutorialRepositoryImpl.kt @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.data.TutorialRepository import com.habitrpg.android.habitica.data.local.TutorialLocalRepository import com.habitrpg.android.habitica.models.TutorialStep import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults class TutorialRepositoryImpl(localRepository: TutorialLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), TutorialRepository { @@ -13,6 +12,6 @@ class TutorialRepositoryImpl(localRepository: TutorialLocalRepository, apiClient override fun getTutorialStep(key: String): Flowable = localRepository.getTutorialStep(key) - override fun getTutorialSteps(keys: List): Flowable> = + override fun getTutorialSteps(keys: List): Flowable> = localRepository.getTutorialSteps(keys) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt index 86a6c8bb3..dea0f0430 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt @@ -25,8 +25,6 @@ import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.functions.BiFunction -import io.realm.RealmResults -import org.reactivestreams.Publisher import java.util.* import java.util.concurrent.TimeUnit @@ -117,10 +115,10 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli return apiClient.sleep().map { user } } - override fun getSkills(user: User): Flowable> = + override fun getSkills(user: User): Flowable> = localRepository.getSkills(user) - override fun getSpecialItems(user: User): Flowable> = + override fun getSpecialItems(user: User): Flowable> = localRepository.getSpecialItems(user) override fun useSkill(key: String, target: String?, taskId: String): Flowable { @@ -351,11 +349,11 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli } } - override fun getAchievements(): Flowable> { + override fun getAchievements(): Flowable> { return localRepository.getAchievements() } - override fun getQuestAchievements(): Flowable> { + override fun getQuestAchievements(): Flowable> { return localRepository.getQuestAchievements(userID) } @@ -366,7 +364,7 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli } } - override fun getTeamPlans(): Flowable> { + override fun getTeamPlans(): Flowable> { return localRepository.getTeamPlans(userID) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.kt index d4e0f027e..8b288594d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.kt @@ -1,10 +1,9 @@ package com.habitrpg.android.habitica.data.local -import android.renderscript.BaseObj +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import io.realm.Realm import io.realm.RealmModel -import io.realm.RealmObject interface BaseLocalRepository { @@ -17,14 +16,14 @@ interface BaseLocalRepository { fun executeTransaction(transaction: Realm.Transaction) fun executeTransactionAsync(transaction: (Realm) -> Unit) fun executeTransactionAsync(transaction: Realm.Transaction) - fun modify(obj: T, transaction: (T) -> Unit) - fun modifyWithRealm(obj: T, transaction: (Realm, T) -> Unit) - fun getLiveObject(obj: T): T? + fun modify(obj: T, transaction: (T) -> Unit) + fun modifyWithRealm(obj: T, transaction: (Realm, T) -> Unit) + fun getLiveObject(obj: T): T? - fun getUnmanagedCopy(managedObject: T): T - fun getUnmanagedCopy(list: List): List + fun getUnmanagedCopy(managedObject: T): T + fun getUnmanagedCopy(list: List): List - fun save(objects: List) - fun save(`object`: T) - fun saveSyncronous(`object`: T) + fun save(objects: List) + fun save(`object`: T) + fun saveSyncronous(`object`: T) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/ChallengeLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/ChallengeLocalRepository.kt index 167ef514f..2840710a9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/ChallengeLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/ChallengeLocalRepository.kt @@ -6,21 +6,20 @@ import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.tasks.Task import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface ChallengeLocalRepository : BaseLocalRepository { - val challenges: Flowable> + val challenges: Flowable> fun getChallenge(id: String): Flowable - fun getTasks(challengeID: String): Flowable> + fun getTasks(challengeID: String): Flowable> - fun getUserChallenges(userId: String): Flowable> + fun getUserChallenges(userId: String): Flowable> fun setParticipating(userID: String, challengeID: String, isParticipating: Boolean) fun saveChallenges(challenges: List, clearChallenges: Boolean, memberOnly: Boolean) fun getChallengeMembership(userId: String, id: String): Flowable - fun getChallengeMemberships(userId: String): Flowable> + fun getChallengeMemberships(userId: String): Flowable> fun isChallengeMember(userID: String, challengeID: String): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/CustomizationLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/CustomizationLocalRepository.kt index 156e1358c..511d3518a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/CustomizationLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/CustomizationLocalRepository.kt @@ -3,8 +3,7 @@ package com.habitrpg.android.habitica.data.local import com.habitrpg.android.habitica.models.inventory.Customization import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface CustomizationLocalRepository : ContentLocalRepository { - fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> + fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/FAQLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/FAQLocalRepository.kt index 07168e870..28404a0ad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/FAQLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/FAQLocalRepository.kt @@ -3,10 +3,9 @@ package com.habitrpg.android.habitica.data.local import com.habitrpg.android.habitica.models.FAQArticle import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface FAQLocalRepository : ContentLocalRepository { fun getArticle(position: Int): Flowable - val articles: Flowable> + val articles: Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt index cf21d88df..8ac6272fa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt @@ -7,38 +7,37 @@ import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface InventoryLocalRepository : ContentLocalRepository { fun getArmoireRemainingCount(): Long - fun getOwnedEquipment(): Flowable> + fun getOwnedEquipment(): Flowable> - fun getMounts(): Flowable> + fun getMounts(): Flowable> - fun getOwnedMounts(userID: String): Flowable> + fun getOwnedMounts(userID: String): Flowable> - fun getPets(): Flowable> + fun getPets(): Flowable> - fun getOwnedPets(userID: String): Flowable> + fun getOwnedPets(userID: String): Flowable> - fun getInAppRewards(): Flowable> + fun getInAppRewards(): Flowable> fun getQuestContent(key: String): Flowable - fun getQuestContent(keys: List): Flowable> + fun getQuestContent(keys: List): Flowable> - fun getEquipment(searchedKeys: List): Flowable> + fun getEquipment(searchedKeys: List): Flowable> - fun getOwnedEquipment(type: String): Flowable> + fun getOwnedEquipment(type: String): Flowable> - fun getItems(itemClass: Class, keys: Array): Flowable> - fun getItems(itemClass: Class): Flowable> - fun getOwnedItems(itemType: String, userID: String, includeZero: Boolean): Flowable> + fun getItems(itemClass: Class, keys: Array): Flowable> + fun getItems(itemClass: Class): Flowable> + fun getOwnedItems(itemType: String, userID: String, includeZero: Boolean): Flowable> fun getOwnedItems(userID: String, includeZero: Boolean): Flowable> - fun getEquipmentType(type: String, set: String): Flowable> + fun getEquipmentType(type: String, set: String): Flowable> fun getEquipment(key: String): Flowable - fun getMounts(type: String?, group: String?, color: String?): Flowable> - fun getPets(type: String?, group: String?, color: String?): Flowable> + fun getMounts(type: String?, group: String?, color: String?): Flowable> + fun getPets(type: String?, group: String?, color: String?): Flowable> fun updateOwnedEquipment(user: User) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.kt index ecd375935..aebf06a4b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.kt @@ -7,22 +7,21 @@ import com.habitrpg.android.habitica.models.social.GroupMembership import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface SocialLocalRepository : BaseLocalRepository { - fun getPublicGuilds(): Flowable> + fun getPublicGuilds(): Flowable> - fun getUserGroups(userID: String, type: String?): Flowable> - fun getGroups(type: String): Flowable> + fun getUserGroups(userID: String, type: String?): Flowable> + fun getGroups(type: String): Flowable> fun getGroup(id: String): Flowable fun saveGroup(group: Group) - fun getGroupChat(groupId: String): Flowable> + fun getGroupChat(groupId: String): Flowable> fun deleteMessage(id: String) - fun getGroupMembers(partyId: String): Flowable> + fun getGroupMembers(partyId: String): Flowable> fun updateRSVPNeeded(user: User?, newValue: Boolean) @@ -39,12 +38,12 @@ interface SocialLocalRepository : BaseLocalRepository { fun doesGroupExist(id: String): Boolean fun updateMembership(userId: String, id: String, isMember: Boolean) fun getGroupMembership(userId: String, id: String): Flowable - fun getGroupMemberships(userId: String): Flowable> + fun getGroupMemberships(userId: String): Flowable> fun rejectGroupInvitation(userID: String, groupID: String) - fun getInboxMessages(userId: String, replyToUserID: String?): Flowable> + fun getInboxMessages(userId: String, replyToUserID: String?): Flowable> - fun getInboxConversation(userId: String): Flowable> + fun getInboxConversation(userId: String): Flowable> fun saveGroupMemberships(userID: String?, memberships: List) fun saveInboxMessages(userID: String, recipientID: String, messages: List, page: Int) fun saveInboxConversations(userID: String, conversations: List) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TagLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TagLocalRepository.kt index e16c85263..b30230296 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TagLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TagLocalRepository.kt @@ -3,10 +3,9 @@ package com.habitrpg.android.habitica.data.local import com.habitrpg.android.habitica.models.Tag import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface TagLocalRepository : BaseLocalRepository { - fun getTags(userId: String): Flowable> + fun getTags(userId: String): Flowable> fun removeOldTags(onlineTags: List, userID: String) fun deleteTag(tagID: String) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt index 593ec2aef..7f9ea3936 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TaskLocalRepository.kt @@ -7,12 +7,11 @@ import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe -import io.realm.RealmResults interface TaskLocalRepository : BaseLocalRepository { - fun getTasks(taskType: String, userID: String): Flowable> - fun getTasks(userId: String): Flowable> + fun getTasks(taskType: String, userID: String): Flowable> + fun getTasks(userId: String): Flowable> fun saveTasks(userId: String, tasksOrder: TasksOrder, tasks: TaskList) @@ -33,7 +32,7 @@ interface TaskLocalRepository : BaseLocalRepository { fun updateTaskPositions(taskOrder: List) fun saveCompletedTodos(userId: String, tasks: MutableCollection) - fun getErroredTasks(userID: String): Flowable> + fun getErroredTasks(userID: String): Flowable> fun getUser(userID: String): Flowable - fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> + fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TutorialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TutorialLocalRepository.kt index 36338a24e..455dc5d75 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TutorialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/TutorialLocalRepository.kt @@ -2,10 +2,9 @@ package com.habitrpg.android.habitica.data.local import com.habitrpg.android.habitica.models.TutorialStep import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults interface TutorialLocalRepository : BaseLocalRepository { fun getTutorialStep(key: String): Flowable - fun getTutorialSteps(keys: List): Flowable> + fun getTutorialSteps(keys: List): Flowable> } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt index 508e2e775..9842db322 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt @@ -5,7 +5,6 @@ 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.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults enum class UserQuestStatus { NO_QUEST, @@ -16,7 +15,7 @@ enum class UserQuestStatus { interface UserLocalRepository : BaseLocalRepository { - fun getTutorialSteps(): Flowable> + fun getTutorialSteps(): Flowable> fun getUser(userID: String): Flowable @@ -24,12 +23,12 @@ interface UserLocalRepository : BaseLocalRepository { fun saveMessages(messages: List) - fun getSkills(user: User): Flowable> + fun getSkills(user: User): Flowable> - fun getSpecialItems(user: User): Flowable> - fun getAchievements(): Flowable> - fun getQuestAchievements(userID: String): Flowable> + fun getSpecialItems(user: User): Flowable> + fun getAchievements(): Flowable> + fun getQuestAchievements(userID: String): Flowable> fun getUserQuestStatus(userID: String): Flowable - fun getTeamPlans(userID: String): Flowable> + fun getTeamPlans(userID: String): Flowable> fun getTeamPlan(teamID: String): Flowable } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.kt index bb800bed2..e774a45db 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.kt @@ -2,13 +2,11 @@ package com.habitrpg.android.habitica.data.local.implementation import android.renderscript.BaseObj import com.habitrpg.android.habitica.data.local.BaseLocalRepository +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import io.realm.Realm -import io.realm.RealmModel import io.realm.RealmObject -import io.realm.kotlin.isManaged -import io.realm.kotlin.where abstract class RealmBaseLocalRepository internal constructor(override var realm: Realm) : BaseLocalRepository { @@ -43,35 +41,35 @@ abstract class RealmBaseLocalRepository internal constructor(override var realm: realm.executeTransactionAsync(transaction) } - override fun getUnmanagedCopy(managedObject: T): T { - return if (managedObject.isManaged && managedObject.isValid) { + override fun getUnmanagedCopy(managedObject: T): T { + return if (managedObject is RealmObject && managedObject.isManaged && managedObject.isValid) { realm.copyFromRealm(managedObject) } else { managedObject } } - override fun getUnmanagedCopy(list: List): List { + override fun getUnmanagedCopy(list: List): List { if (isClosed) { return emptyList() } return realm.copyFromRealm(list) } - override fun save(`object`: T) { + override fun save(`object`: T) { if (isClosed) { return } realm.executeTransactionAsync { realm1 -> realm1.insertOrUpdate(`object`) } } - override fun save(objects: List) { + override fun save(objects: List) { if (isClosed) { return } realm.executeTransactionAsync { realm1 -> realm1.insertOrUpdate(objects) } } - override fun saveSyncronous(`object`: T) { + override fun saveSyncronous(`object`: T) { if (isClosed) { return } realm.executeTransaction { realm1 -> realm1.insertOrUpdate(`object`) } } - override fun modify(obj: T, transaction: (T) -> Unit) { + override fun modify(obj: T, transaction: (T) -> Unit) { if (isClosed) { return } val liveObject = getLiveObject(obj) ?: return realm.executeTransaction { @@ -79,7 +77,7 @@ abstract class RealmBaseLocalRepository internal constructor(override var realm: } } - override fun modifyWithRealm(obj: T, transaction: (Realm, T) -> Unit) { + override fun modifyWithRealm(obj: T, transaction: (Realm, T) -> Unit) { if (isClosed) { return } val liveObject = getLiveObject(obj) ?: return realm.executeTransaction { @@ -87,10 +85,10 @@ abstract class RealmBaseLocalRepository internal constructor(override var realm: } } - override fun getLiveObject(obj: T): T? { + override fun getLiveObject(obj: T): T? { if (isClosed) return null - if (!obj.isManaged()) return obj - val baseObject = obj as? BaseObject ?: return null + if (!(obj is RealmObject) || !obj.isManaged) return obj + val baseObject = obj as? BaseMainObject ?: return null return realm.where(baseObject.realmClass).equalTo(baseObject.primaryIdentifierName, baseObject.primaryIdentifier).findFirst() as? T } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt index 552d84fc8..b159565ac 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt @@ -7,7 +7,6 @@ import com.habitrpg.android.habitica.models.tasks.Task import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults import io.realm.Sort import java.util.* @@ -27,7 +26,7 @@ class RealmChallengeLocalRepository(realm: Realm) : RealmBaseLocalRepository(rea .asFlowable() .filter { it.isLoaded }).map { it.first() } - override fun getChallengeMemberships(userId: String): Flowable> = RxJavaBridge.toV3Flowable(realm.where(ChallengeMembership::class.java) + override fun getChallengeMemberships(userId: String): Flowable> = RxJavaBridge.toV3Flowable(realm.where(ChallengeMembership::class.java) .equalTo("userID", userId) .findAll() .asFlowable() @@ -42,7 +41,7 @@ class RealmChallengeLocalRepository(realm: Realm) : RealmBaseLocalRepository(rea .map { it.first() }) } - override fun getTasks(challengeID: String): Flowable> { + override fun getTasks(challengeID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Task::class.java) .equalTo("userId", challengeID) .findAll() @@ -50,7 +49,7 @@ class RealmChallengeLocalRepository(realm: Realm) : RealmBaseLocalRepository(rea .filter { realmObject -> realmObject.isLoaded }) } - override val challenges: Flowable> + override val challenges: Flowable> get() = RxJavaBridge.toV3Flowable(realm.where(Challenge::class.java) .isNotNull("name") .sort("official", Sort.DESCENDING, "createdAt", Sort.DESCENDING) @@ -58,7 +57,7 @@ class RealmChallengeLocalRepository(realm: Realm) : RealmBaseLocalRepository(rea .asFlowable() .filter { it.isLoaded }) - override fun getUserChallenges(userId: String): Flowable> { + override fun getUserChallenges(userId: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(ChallengeMembership::class.java) .equalTo("userID", userId) .findAll() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt index d9a21167f..f7c621cb3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt @@ -5,13 +5,12 @@ import com.habitrpg.android.habitica.models.inventory.Customization import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults import java.util.* class RealmCustomizationLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), CustomizationLocalRepository { - override fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> { + override fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flowable> { var query = realm.where(Customization::class.java) .equalTo("type", type) .equalTo("category", category) @@ -34,6 +33,7 @@ class RealmCustomizationLocalRepository(realm: Realm) : RealmContentLocalReposit .sort("customizationSetName") .findAll() .asFlowable() - .filter { it.isLoaded }) + .filter { it.isLoaded } + .map { it }) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmFAQLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmFAQLocalRepository.kt index fd99f0a93..eb42bb9b1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmFAQLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmFAQLocalRepository.kt @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.models.FAQArticle import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults class RealmFAQLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), FAQLocalRepository { override fun getArticle(position: Int): Flowable { @@ -17,7 +16,7 @@ class RealmFAQLocalRepository(realm: Realm) : RealmContentLocalRepository(realm) .map { it.first() }) } - override val articles: Flowable> + override val articles: Flowable> get() = RxJavaBridge.toV3Flowable(realm.where(FAQArticle::class.java) .findAll() .asFlowable() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt index 0b0309884..3524aedfb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt @@ -12,7 +12,6 @@ import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm import io.realm.RealmObject -import io.realm.RealmResults import io.realm.Sort import java.text.SimpleDateFormat import java.util.* @@ -20,7 +19,7 @@ import kotlin.collections.HashMap class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), InventoryLocalRepository { - override fun getQuestContent(keys: List): Flowable> { + override fun getQuestContent(keys: List): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(QuestContent::class.java) .`in`("key", keys.toTypedArray()) .findAll() @@ -36,7 +35,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .map { content -> content.first() }) } - override fun getEquipment(searchedKeys: List): Flowable> { + override fun getEquipment(searchedKeys: List): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Equipment::class.java) .`in`("key", searchedKeys.toTypedArray()) .findAll() @@ -55,7 +54,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .count() } - override fun getOwnedEquipment(type: String): Flowable> { + override fun getOwnedEquipment(type: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Equipment::class.java) .equalTo("type", type) .equalTo("owned", true) @@ -64,7 +63,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getOwnedEquipment(): Flowable> { + override fun getOwnedEquipment(): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Equipment::class.java) .equalTo("owned", true) .findAll() @@ -72,7 +71,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getEquipmentType(type: String, set: String): Flowable> { + override fun getEquipmentType(type: String, set: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Equipment::class.java) .equalTo("type", type) .equalTo("gearSet", set) @@ -81,7 +80,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getOwnedItems(itemType: String, userID: String, includeZero: Boolean): Flowable> { + override fun getOwnedItems(itemType: String, userID: String, includeZero: Boolean): Flowable> { var query = realm.where(OwnedItem::class.java) if (!includeZero) { query = query.greaterThan("numberOwned", 0) @@ -94,12 +93,12 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getItems(itemClass: Class, keys: Array): Flowable> { + override fun getItems(itemClass: Class, keys: Array): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(itemClass).`in`("key", keys).findAll().asFlowable() .filter { it.isLoaded }) } - override fun getItems(itemClass: Class): Flowable> { + override fun getItems(itemClass: Class): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(itemClass).findAll().asFlowable() .filter { it.isLoaded }) } @@ -130,7 +129,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .cast(Equipment::class.java)) } - override fun getMounts(): Flowable> { + override fun getMounts(): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Mount::class.java) .sort("type", Sort.ASCENDING, "animal", Sort.ASCENDING) .findAll() @@ -138,7 +137,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getMounts(type: String?, group: String?, color: String?): Flowable> { + override fun getMounts(type: String?, group: String?, color: String?): Flowable> { var query = realm.where(Mount::class.java) .sort("type", Sort.ASCENDING, if (color == null) "color" else "animal", Sort.ASCENDING) if (type != null) { @@ -155,7 +154,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getOwnedMounts(userID: String): Flowable> { + override fun getOwnedMounts(userID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(OwnedMount::class.java) .equalTo("owned", true) .equalTo("userID", userID) @@ -164,7 +163,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getPets(): Flowable> { + override fun getPets(): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Pet::class.java) .sort("type", Sort.ASCENDING, "animal", Sort.ASCENDING) .findAll() @@ -172,7 +171,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getPets(type: String?, group: String?, color: String?): Flowable> { + override fun getPets(type: String?, group: String?, color: String?): Flowable> { var query = realm.where(Pet::class.java) .sort("type", Sort.ASCENDING, if (color == null) "color" else "animal", Sort.ASCENDING) if (type != null) { @@ -189,7 +188,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( .filter { it.isLoaded }) } - override fun getOwnedPets(userID: String): Flowable> { + override fun getOwnedPets(userID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(OwnedPet::class.java) .greaterThan("trained", 0) .equalTo("userID", userID) @@ -256,7 +255,7 @@ class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository( } } - override fun getInAppRewards(): Flowable> { + override fun getInAppRewards(): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(ShopItem::class.java) .findAll() .asFlowable() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt index 2d2397111..5df3cf6ae 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt @@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.models.user.User import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults import io.realm.Sort import java.util.* @@ -30,7 +29,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) .filter { it.isLoaded && it.isNotEmpty() } .map { it.first() }) - override fun getGroupMemberships(userId: String): Flowable> = RxJavaBridge.toV3Flowable(realm.where(GroupMembership::class.java) + override fun getGroupMemberships(userId: String): Flowable> = RxJavaBridge.toV3Flowable(realm.where(GroupMembership::class.java) .equalTo("userID", userId) .findAll() .asFlowable() @@ -109,7 +108,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) } } - override fun getPublicGuilds(): Flowable> = RxJavaBridge.toV3Flowable(realm.where(Group::class.java) + override fun getPublicGuilds(): Flowable> = RxJavaBridge.toV3Flowable(realm.where(Group::class.java) .equalTo("type", "guild") .equalTo("privacy", "public") .notEqualTo("id", Group.TAVERN_ID) @@ -118,7 +117,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) .asFlowable() .filter { it.isLoaded }) - override fun getUserGroups(userID: String, type: String?): Flowable> = RxJavaBridge.toV3Flowable(realm.where(GroupMembership::class.java) + override fun getUserGroups(userID: String, type: String?): Flowable> = RxJavaBridge.toV3Flowable(realm.where(GroupMembership::class.java) .equalTo("userID", userID) .findAll() .asFlowable() @@ -138,7 +137,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) - override fun getGroups(type: String): Flowable> { + override fun getGroups(type: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Group::class.java) .equalTo("type", type) .findAll() @@ -155,7 +154,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) .map { groups -> groups.first() }) } - override fun getGroupChat(groupId: String): Flowable> { + override fun getGroupChat(groupId: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(ChatMessage::class.java) .equalTo("groupId", groupId) .sort("timestamp", Sort.DESCENDING) @@ -169,7 +168,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) executeTransaction { chatMessage?.deleteFromRealm() } } - override fun getGroupMembers(partyId: String): Flowable> { + override fun getGroupMembers(partyId: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Member::class.java) .equalTo("party.id", partyId) .findAll() @@ -276,7 +275,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) return party != null && party.isValid } - override fun getInboxMessages(userId: String, replyToUserID: String?): Flowable> { + override fun getInboxMessages(userId: String, replyToUserID: String?): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(ChatMessage::class.java) .equalTo("isInboxMessage", true) .equalTo("uuid", replyToUserID) @@ -287,7 +286,7 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) .filter { it.isLoaded }) } - override fun getInboxConversation(userId: String): Flowable> { + override fun getInboxConversation(userId: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(InboxConversation::class.java) .equalTo("userID", userId) .sort("timestamp", Sort.DESCENDING) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTagLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTagLocalRepository.kt index ce95e38af..22030f01f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTagLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTagLocalRepository.kt @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.models.Tag import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults class RealmTagLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), TagLocalRepository { @@ -14,7 +13,7 @@ class RealmTagLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), T executeTransaction { tag?.deleteFromRealm() } } - override fun getTags(userId: String): Flowable> { + override fun getTags(userId: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Tag::class.java).equalTo("userId", userId).findAll().asFlowable()) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt index a6f92b7de..def63ad24 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt @@ -8,12 +8,11 @@ import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.realm.Realm import io.realm.RealmObject -import io.realm.RealmResults import io.realm.Sort class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), TaskLocalRepository { - override fun getTasks(taskType: String, userID: String): Flowable> { + override fun getTasks(taskType: String, userID: String): Flowable> { if (realm.isClosed) { return Flowable.empty() } @@ -26,7 +25,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .filter { it.isLoaded }).retry(1) } - override fun getTasks(userId: String): Flowable> { + override fun getTasks(userId: String): Flowable> { if (realm.isClosed) { return Flowable.empty() } @@ -219,7 +218,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), } } - override fun getErroredTasks(userID: String): Flowable> { + override fun getErroredTasks(userID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Task::class.java) .equalTo("userId", userID) .equalTo("hasErrored", true) @@ -238,7 +237,7 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .map { users -> users.first() }) } - override fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> { + override fun getTasksForChallenge(challengeID: String?, userID: String?): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Task::class.java) .equalTo("challengeID", challengeID) .equalTo("userId", userID) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTutorialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTutorialLocalRepository.kt index e4661fd54..355c656d8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTutorialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTutorialLocalRepository.kt @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.models.TutorialStep import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults class RealmTutorialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), TutorialLocalRepository { @@ -31,7 +30,7 @@ class RealmTutorialLocalRepository(realm: Realm) : RealmBaseLocalRepository(real .cast(TutorialStep::class.java)) } - override fun getTutorialSteps(keys: List): Flowable> { + override fun getTutorialSteps(keys: List): Flowable> { if (realm.isClosed) return Flowable.empty() return RxJavaBridge.toV3Flowable(realm.where(TutorialStep::class.java) .`in`("identifier", keys.toTypedArray()) 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 aed8622af..a3c82f5f6 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 @@ -12,7 +12,6 @@ import com.habitrpg.android.habitica.models.user.User import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import io.realm.RealmResults class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), UserLocalRepository { override fun getUserQuestStatus(userID: String): Flowable { @@ -35,7 +34,7 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), }} } - override fun getAchievements(): Flowable> { + override fun getAchievements(): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(Achievement::class.java) .sort("index") .findAll() @@ -43,7 +42,7 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .filter { it.isLoaded }) } - override fun getQuestAchievements(userID: String): Flowable> { + override fun getQuestAchievements(userID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(QuestAchievement::class.java) .equalTo("userID", userID) .findAll() @@ -51,8 +50,8 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .filter { it.isLoaded }) } - override fun getTutorialSteps(): Flowable> = RxJavaBridge.toV3Flowable(realm.where(TutorialStep::class.java).findAll().asFlowable() - .filter { it.isLoaded }) + override fun getTutorialSteps(): Flowable> = RxJavaBridge.toV3Flowable(realm.where(TutorialStep::class.java).findAll().asFlowable() + .filter { it.isLoaded }.map { it }) override fun getUser(userID: String): Flowable { if (realm.isClosed) return Flowable.empty() @@ -135,7 +134,7 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), } } - override fun getTeamPlans(userID: String): Flowable> { + override fun getTeamPlans(userID: String): Flowable> { return RxJavaBridge.toV3Flowable(realm.where(TeamPlan::class.java) .equalTo("userID", userID) .findAll() @@ -153,7 +152,7 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .map { teams -> teams.first() }) } - override fun getSkills(user: User): Flowable> { + override fun getSkills(user: User): Flowable> { val habitClass = if (user.preferences?.disableClasses == true) "none" else user.stats?.habitClass return RxJavaBridge.toV3Flowable(realm.where(Skill::class.java) .equalTo("habitClass", habitClass) @@ -163,7 +162,7 @@ class RealmUserLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), .filter { it.isLoaded }) } - override fun getSpecialItems(user: User): Flowable> { + override fun getSpecialItems(user: User): Flowable> { val specialItems = user.items?.special val ownedItems = ArrayList() if (specialItems != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Achievement.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Achievement.kt index 9580c1d67..b877deb44 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Achievement.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Achievement.kt @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.models import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Achievement : RealmObject() { +open class Achievement : RealmObject(), BaseObject { @PrimaryKey var key: String? = null var type: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/BaseObject.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/BaseObject.kt index 1442596b7..72ec49f7d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/BaseObject.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/BaseObject.kt @@ -2,8 +2,9 @@ package com.habitrpg.android.habitica.models import io.realm.RealmModel +interface BaseObject: RealmModel -interface BaseObject: RealmModel { +interface BaseMainObject: BaseObject { val realmClass: Class val primaryIdentifier: String? val primaryIdentifierName: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/FAQArticle.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/FAQArticle.kt index a911ce735..4a9b04449 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/FAQArticle.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/FAQArticle.kt @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.models import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class FAQArticle : RealmObject() { +open class FAQArticle : RealmObject(), BaseObject { @PrimaryKey var position: Int? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/QuestAchievement.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/QuestAchievement.kt index e55835c59..0f752a6a5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/QuestAchievement.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/QuestAchievement.kt @@ -4,7 +4,7 @@ import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey -open class QuestAchievement: RealmObject() { +open class QuestAchievement: RealmObject(), BaseObject { @PrimaryKey var combinedKey: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Skill.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Skill.kt index 396773854..0e7446cd1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Skill.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Skill.kt @@ -5,7 +5,7 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Skill : RealmObject() { +open class Skill : RealmObject(), BaseObject { @PrimaryKey var key: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt index 845685c7d..eb0bb7ba5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt @@ -6,7 +6,7 @@ import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Tag : RealmObject() { +open class Tag : RealmObject(), BaseObject { @PrimaryKey var id: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TeamPlan.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TeamPlan.kt index 63158fc06..ee79cf8a4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TeamPlan.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TeamPlan.kt @@ -5,7 +5,7 @@ import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class TeamPlan : RealmObject() { +open class TeamPlan : RealmObject(), BaseObject { @PrimaryKey var id: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt index aa89325fb..b125270df 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt @@ -5,7 +5,7 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class TutorialStep: RealmObject(), BaseObject { +open class TutorialStep: RealmObject(), BaseMainObject { @PrimaryKey var key: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt index 23bdf774c..65d0c14c7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt @@ -9,7 +9,7 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class WorldState: RealmObject() { +open class WorldState: RealmObject(), BaseObject { @PrimaryKey var id = "habitica" var worldBossKey: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt index 4cd95da17..e0d6079c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt @@ -6,7 +6,7 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class WorldStateEvent: RealmObject(), BaseObject { +open class WorldStateEvent: RealmObject(), BaseMainObject { val isCurrentlyActive: Boolean get() { val now = Date() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.java deleted file mode 100644 index 4d6e76d07..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.habitrpg.android.habitica.models.auth; - - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -/** - * Created by admin on 18/11/15. - */ -public class LocalAuthentication extends RealmObject { - - @PrimaryKey - public String userID; - String username; - String email; - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.kt new file mode 100644 index 000000000..09709e96b --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/auth/LocalAuthentication.kt @@ -0,0 +1,12 @@ +package com.habitrpg.android.habitica.models.auth + +import com.habitrpg.android.habitica.models.BaseObject +import io.realm.RealmObject +import io.realm.annotations.PrimaryKey + +open class LocalAuthentication : RealmObject(), BaseObject { + @PrimaryKey + var userID: String? = null + var username: String? = null + var email: String? = null +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt index 93d5d0c61..bece8280a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class Customization : RealmObject() { +open class Customization : RealmObject(), BaseObject { @PrimaryKey var id: String? = null var identifier: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt index 7213096d8..73ccdddb2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.inventory import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Equipment : RealmObject() { +open class Equipment : RealmObject(), BaseObject { var value: Double = 0.toDouble() var type: String? = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt index 3516e677b..a019a54af 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmModel import io.realm.RealmObject import java.util.* -open class ItemEvent : RealmObject() { +open class ItemEvent : RealmObject(), BaseObject { var start: Date? = null var end: Date? = null } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Quest.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Quest.kt index 7b23534ef..198c44b6b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Quest.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Quest.kt @@ -1,12 +1,13 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.members.Member import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Quest : RealmObject() { +open class Quest : RealmObject(), BaseObject { @PrimaryKey var id: String? = null set(value) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBoss.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBoss.kt index 4f07122d2..2efcbd5d8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBoss.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBoss.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestBoss : RealmObject() { +open class QuestBoss : RealmObject(), BaseObject { @PrimaryKey var key: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBossRage.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBossRage.kt index 4910bd14c..f6788b221 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBossRage.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestBossRage.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestBossRage : RealmObject() { +open class QuestBossRage : RealmObject(), BaseObject { @PrimaryKey var key: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.java deleted file mode 100644 index 8ff399709..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.habitrpg.android.habitica.models.inventory; - - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class QuestCollect extends RealmObject { - - @PrimaryKey - public String key; - public String text; - public int count; -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.kt new file mode 100644 index 000000000..7aa1ea98d --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestCollect.kt @@ -0,0 +1,12 @@ +package com.habitrpg.android.habitica.models.inventory + +import com.habitrpg.android.habitica.models.BaseObject +import io.realm.RealmObject +import io.realm.annotations.PrimaryKey + +open class QuestCollect : RealmObject(), BaseObject { + @PrimaryKey + var key: String? = null + var text: String? = null + var count = 0 +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestColors.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestColors.kt index 12394fa6d..6884e325d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestColors.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestColors.kt @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.models.inventory import android.graphics.Color +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey @@ -8,7 +9,7 @@ import io.realm.annotations.PrimaryKey * Created by phillip on 31.01.18. */ -open class QuestColors : RealmObject() { +open class QuestColors : RealmObject(), BaseObject { @PrimaryKey var key: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestContent.kt index df474fd5f..a43ac5708 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestContent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestContent.kt @@ -53,7 +53,7 @@ open class QuestContent : RealmObject(), Item { override val type: String get() = "quests" - fun getCollectWithKey(key: String): QuestCollect? { + fun getCollectWithKey(key: String?): QuestCollect? { for (collect in this.collect ?: emptyList()) { if (collect.key == key) { return collect diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDropItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDropItem.kt index 30fa1a93f..8be7de2cf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDropItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDropItem.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestDropItem : RealmObject() { +open class QuestDropItem : RealmObject(), BaseObject { @PrimaryKey var combinedKey: String? = null var questKey: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDrops.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDrops.kt index e4b5ae7ea..a6116dc7e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDrops.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestDrops.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey @@ -7,7 +8,7 @@ import io.realm.annotations.PrimaryKey /** * Created by phillip on 25.07.17. */ -open class QuestDrops : RealmObject() { +open class QuestDrops : RealmObject(), BaseObject { @PrimaryKey var key: String? = null set(value) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestMember.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestMember.kt index 10f13036d..97a8761ca 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestMember.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestMember.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestMember : RealmObject() { +open class QuestMember : RealmObject(), BaseObject { @PrimaryKey var key: String? = null var isParticipating: Boolean? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgress.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgress.kt index 8ab4e1d8e..71873f55a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgress.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgress.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestProgress : RealmObject() { +open class QuestProgress : RealmObject(), BaseObject { @PrimaryKey var id: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.java deleted file mode 100644 index 8f9ccb8a6..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.habitrpg.android.habitica.models.inventory; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class QuestProgressCollect extends RealmObject { - - @PrimaryKey - public - String key; - - public int count; -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.kt new file mode 100644 index 000000000..0a44d647e --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestProgressCollect.kt @@ -0,0 +1,11 @@ +package com.habitrpg.android.habitica.models.inventory + +import com.habitrpg.android.habitica.models.BaseObject +import io.realm.RealmObject +import io.realm.annotations.PrimaryKey + +open class QuestProgressCollect : RealmObject(), BaseObject { + @PrimaryKey + var key: String? = null + var count = 0 +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestRageStrike.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestRageStrike.kt index 03308db42..b6c79a7ec 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestRageStrike.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/QuestRageStrike.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.inventory +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class QuestRageStrike() : RealmObject() { +open class QuestRageStrike() : RealmObject(), BaseObject { @PrimaryKey var key = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/SpecialItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/SpecialItem.kt index 9292727a9..79ddc50ca 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/SpecialItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/SpecialItem.kt @@ -5,7 +5,6 @@ import android.content.Context import com.habitrpg.android.habitica.R import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* open class SpecialItem : RealmObject(), Item { override val type: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/owned/OwnedEquipment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/owned/OwnedEquipment.kt index c76f153bd..cd63c68ef 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/owned/OwnedEquipment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/owned/OwnedEquipment.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.inventory.owned +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class OwnedEquipment : RealmObject() { +open class OwnedEquipment : RealmObject(), BaseObject { @PrimaryKey var combinedKey: String? = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/invitations/Invitations.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/invitations/Invitations.kt index 099bdb4ba..a100ac3ad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/invitations/Invitations.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/invitations/Invitations.kt @@ -1,12 +1,13 @@ package com.habitrpg.android.habitica.models.invitations +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.user.User import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Invitations : RealmObject() { +open class Invitations : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt index f59028103..2e1ede4bb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt @@ -2,13 +2,14 @@ package com.habitrpg.android.habitica.models.members import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.Avatar +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.social.UserParty import com.habitrpg.android.habitica.models.user.* import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Member : RealmObject(), Avatar { +open class Member : RealmObject(), Avatar, BaseObject { @PrimaryKey @SerializedName("_id") diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt index ed4a95552..6a26a99a3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt @@ -5,13 +5,14 @@ import android.content.res.Resources import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.inventory.ItemEvent import com.habitrpg.android.habitica.models.user.User import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class ShopItem : RealmObject() { +open class ShopItem : RealmObject(), BaseObject { @PrimaryKey var key: String = "" set(value) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt index bc79daefb..6d09bdcca 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt @@ -2,11 +2,12 @@ package com.habitrpg.android.habitica.models.shops import android.content.Context import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class ShopItemUnlockCondition : RealmObject() { +open class ShopItemUnlockCondition : RealmObject(), BaseObject { @PrimaryKey var questKey: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt index 8ad50f974..11d5862c3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.models.social +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.User import io.realm.RealmObject @@ -7,7 +8,7 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import java.util.* -open class Challenge : RealmObject() { +open class Challenge : RealmObject(), BaseObject { @PrimaryKey var id: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChallengeMembership.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChallengeMembership.kt index 0ab662e25..7e79471c0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChallengeMembership.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChallengeMembership.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.social +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class ChallengeMembership : RealmObject { +open class ChallengeMembership : RealmObject, BaseObject { @PrimaryKey var combinedID: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessage.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessage.kt index 232ab1899..a44d2fc4a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessage.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessage.kt @@ -1,17 +1,15 @@ package com.habitrpg.android.habitica.models.social -import android.renderscript.BaseObj import android.text.Spanned -import com.habitrpg.android.habitica.models.BaseObject +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.user.Backer import com.habitrpg.android.habitica.models.user.ContributorInfo -import com.habitrpg.android.habitica.models.user.User import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey -open class ChatMessage : RealmObject(), BaseObject { +open class ChatMessage : RealmObject(), BaseMainObject { override val realmClass: Class get() = ChatMessage::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessageLike.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessageLike.kt index 5da625807..48748adce 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessageLike.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/ChatMessageLike.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.models.social +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey @@ -7,7 +8,7 @@ import io.realm.annotations.PrimaryKey * Created by phillip on 30.06.17. */ -open class ChatMessageLike : RealmObject { +open class ChatMessageLike : RealmObject, BaseObject { @PrimaryKey var key: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt index 0267440f3..1d9c299d5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt @@ -1,7 +1,7 @@ package com.habitrpg.android.habitica.models.social import com.google.gson.annotations.SerializedName -import com.habitrpg.android.habitica.models.BaseObject +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.tasks.TaskList import com.habitrpg.android.habitica.models.tasks.TasksOrder @@ -12,7 +12,7 @@ import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey -open class Group : RealmObject(), BaseObject { +open class Group : RealmObject(), BaseMainObject { override val realmClass: Class get() = Group::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupCategory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupCategory.kt index 91e350cec..420172777 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupCategory.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupCategory.kt @@ -1,12 +1,12 @@ package com.habitrpg.android.habitica.models.social import com.google.gson.annotations.SerializedName -import com.habitrpg.android.habitica.models.BaseObject +import com.habitrpg.android.habitica.models.BaseMainObject import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class GroupCategory : RealmObject(), BaseObject { +open class GroupCategory : RealmObject(), BaseMainObject { override val realmClass: Class get() = Group::class.java override val primaryIdentifier: String? diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupMembership.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupMembership.kt index 4e71f11b3..97d62d659 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupMembership.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/GroupMembership.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.social +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class GroupMembership : RealmObject { +open class GroupMembership : RealmObject, BaseObject { @PrimaryKey var combinedID: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt index f44eb4306..c0c527d6f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.social +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.user.ContributorInfo import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class InboxConversation : RealmObject() { +open class InboxConversation : RealmObject(), BaseObject { @PrimaryKey var combinedID: String = "" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/UserParty.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/UserParty.kt index ca98d4ff0..c07b8334a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/UserParty.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/UserParty.kt @@ -1,12 +1,13 @@ package com.habitrpg.android.habitica.models.social import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.inventory.Quest import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class UserParty : RealmObject() { +open class UserParty : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null @SerializedName("_id") diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt index 75f32adca..ea08cc2f9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt @@ -2,13 +2,14 @@ package com.habitrpg.android.habitica.models.tasks import android.os.Parcel import android.os.Parcelable +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class ChecklistItem : RealmObject, BaseObject, Parcelable { +open class ChecklistItem : RealmObject, BaseMainObject, Parcelable { override val realmClass: Class get() = ChecklistItem::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt index 1a64ab8e9..44813a2e7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt @@ -6,6 +6,7 @@ import android.text.Spanned import androidx.annotation.StringDef import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.Tag import com.habitrpg.android.habitica.models.user.Stats @@ -18,7 +19,7 @@ import org.json.JSONArray import org.json.JSONException import java.util.* -open class Task : RealmObject, BaseObject, Parcelable { +open class Task : RealmObject, BaseMainObject, Parcelable { override val realmClass: Class get() = Task::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt index db59ecaf2..a0810b6e9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt @@ -2,12 +2,13 @@ package com.habitrpg.android.habitica.models.tasks import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class TaskGroupPlan : RealmObject() { +open class TaskGroupPlan : RealmObject(), BaseObject { @PrimaryKey internal var taskID: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskTag.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskTag.kt index cc8e02636..431bf433f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskTag.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskTag.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.tasks +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.Tag import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class TaskTag : RealmObject() { +open class TaskTag : RealmObject(), BaseObject { var tag: Tag? = null set(value) { field = value diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ABTest.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ABTest.kt index 6334dd938..6f03e5617 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ABTest.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ABTest.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class ABTest: RealmObject() { +open class ABTest: RealmObject(), BaseObject { @PrimaryKey var userID: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Authentication.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Authentication.kt index 29cdfcf68..2b6ea10c5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Authentication.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Authentication.kt @@ -1,12 +1,13 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.auth.LocalAuthentication import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Authentication : RealmObject() { +open class Authentication : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt index 891992153..5e4e55706 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class AuthenticationTimestamps : RealmObject() { +open class AuthenticationTimestamps : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Backer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Backer.kt index bb903ec6c..9f98626f7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Backer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Backer.kt @@ -1,8 +1,9 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject -open class Backer : RealmObject() { +open class Backer : RealmObject(), BaseObject { var id: String? = null var npc: String? = null var tier: Int? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Buffs.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Buffs.kt index d366f518c..b7228d06d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Buffs.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Buffs.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Buffs : RealmObject() { +open class Buffs : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null var con: Float? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ContributorInfo.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ContributorInfo.kt index a3aa155b7..5be6cb99f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ContributorInfo.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/ContributorInfo.kt @@ -4,9 +4,10 @@ import io.realm.RealmObject import android.util.SparseIntArray import com.habitrpg.android.habitica.models.user.ContributorInfo import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.models.BaseObject import io.realm.annotations.PrimaryKey -open class ContributorInfo : RealmObject() { +open class ContributorInfo : RealmObject(), BaseObject { companion object { val CONTRIBUTOR_COLOR_DICT: SparseIntArray = SparseIntArray() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/EmailNotificationsPreference.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/EmailNotificationsPreference.kt index f12b85dc9..94b73fe64 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/EmailNotificationsPreference.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/EmailNotificationsPreference.kt @@ -1,8 +1,9 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject -open class EmailNotificationsPreference : RealmObject() { +open class EmailNotificationsPreference : RealmObject(), BaseObject { var unsubscribeFromAll: Boolean = false var invitedParty: Boolean = false var invitedQuest: Boolean = false diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Flags.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Flags.kt index 6ff8decae..1bdf8ad3d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Flags.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Flags.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.TutorialStep import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Flags : RealmObject() { +open class Flags : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null var tutorial: RealmList? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.java deleted file mode 100644 index 28f33c1c6..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.habitrpg.android.habitica.models.user; - -import com.habitrpg.android.habitica.models.inventory.Equipment; - -import io.realm.RealmList; -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class Gear extends RealmObject { - - @PrimaryKey - private String userId; - - public RealmList owned; - Items items; - private Outfit equipped; - private Outfit costume; - - public Outfit getCostume() { - return costume; - } - - public void setCostume(Outfit costume) { - this.costume = costume; - } - - public Outfit getEquipped() { - return equipped; - } - - public void setEquipped(Outfit equipped) { - this.equipped = equipped; - } - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - if (costume != null && !costume.isManaged()) { - costume.setUserId(userId); - } - if (equipped != null && !equipped.isManaged()) { - equipped.setUserId(userId+"equipped"); - } - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.kt new file mode 100644 index 000000000..03cc69c8e --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Gear.kt @@ -0,0 +1,25 @@ +package com.habitrpg.android.habitica.models.user + +import com.habitrpg.android.habitica.models.BaseObject +import com.habitrpg.android.habitica.models.inventory.Equipment +import io.realm.RealmList +import io.realm.RealmObject +import io.realm.annotations.PrimaryKey + +open class Gear : RealmObject(), BaseObject { + @PrimaryKey + var userId: String? = null + set(value) { + field = value + if (costume != null && costume?.isManaged == false) { + costume?.userId = userId + } + if (equipped != null && equipped?.isManaged == false) { + equipped?.userId = userId + "equipped" + } + } + var owned: RealmList? = null + var items: Items? = null + var equipped: Outfit? = null + var costume: Outfit? = null +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Hair.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Hair.kt index 781799570..6b22e97c5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Hair.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Hair.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Hair : RealmObject { +open class Hair : RealmObject, BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Inbox.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Inbox.kt index d07a896e1..bd276cb78 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Inbox.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Inbox.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Inbox : RealmObject() { +open class Inbox : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt index e028fc561..8bb440a02 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class Items : RealmObject { +open class Items : RealmObject, BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Outfit.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Outfit.kt index 8943300ea..8cb095436 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Outfit.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Outfit.kt @@ -3,11 +3,12 @@ package com.habitrpg.android.habitica.models.user import android.text.TextUtils import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Outfit : RealmObject() { +open class Outfit : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedItem.kt index 83df6378c..044fd61d6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedItem.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseMainObject import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class OwnedItem : RealmObject(), BaseObject, OwnedObject { +open class OwnedItem : RealmObject(), BaseMainObject, OwnedObject { override val realmClass: Class get() = OwnedItem::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedObject.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedObject.kt index 3d2619989..2a82cd7eb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedObject.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/OwnedObject.kt @@ -1,6 +1,8 @@ package com.habitrpg.android.habitica.models.user -interface OwnedObject { +import com.habitrpg.android.habitica.models.BaseObject + +interface OwnedObject: BaseObject { var combinedKey: String? var userID: String? var key: String? diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt index caf02668f..b34905dbb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt @@ -3,12 +3,13 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.AvatarPreferences +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey import java.util.* -open class Preferences : RealmObject(), AvatarPreferences { +open class Preferences : RealmObject(), AvatarPreferences, BaseObject { @PrimaryKey override var userId: String? = null @@ -54,8 +55,4 @@ open class Preferences : RealmObject(), AvatarPreferences { var pushNotifications: PushNotificationsPreference? = null var emailNotifications: EmailNotificationsPreference? = null var autoEquip: Boolean = true - - fun hasTaskBasedAllocation(): Boolean { - return allocationMode?.toLowerCase(Locale.ROOT) == "taskbased" && automaticAllocation - } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Profile.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Profile.kt index e4cded1d0..0e80aa1ba 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Profile.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Profile.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Profile : RealmObject { +open class Profile : RealmObject, BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Purchases.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Purchases.kt index 0653e1722..6f6275231 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Purchases.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Purchases.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Purchases : RealmObject() { +open class Purchases : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null set(value) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/PushNotificationsPreference.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/PushNotificationsPreference.kt index 68976205e..2afdcb8ff 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/PushNotificationsPreference.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/PushNotificationsPreference.kt @@ -1,8 +1,9 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject -open class PushNotificationsPreference : RealmObject() { +open class PushNotificationsPreference : RealmObject(), BaseObject { var unsubscribeFromAll: Boolean = false var invitedParty: Boolean = false var invitedQuest: Boolean = false diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SpecialItems.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SpecialItems.kt index 92ff822db..8f9b8407b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SpecialItems.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SpecialItems.kt @@ -1,11 +1,12 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class SpecialItems : RealmObject() { +open class SpecialItems : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Stats.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Stats.kt index b04867e22..94cb80969 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Stats.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Stats.kt @@ -3,11 +3,12 @@ package com.habitrpg.android.habitica.models.user import android.content.Context import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Stats : RealmObject() { +open class Stats : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.java deleted file mode 100644 index 6fa30aa34..000000000 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.habitrpg.android.habitica.models.user; - -import androidx.annotation.Nullable; - -import com.google.gson.annotations.SerializedName; - -import java.util.Date; - -import io.realm.RealmObject; -import io.realm.annotations.PrimaryKey; - -public class SubscriptionPlan extends RealmObject { - - public static String PLANID_BASIC = "basic"; - public static String PLANID_BASICEARNED = "basic_earned"; - public static String PLANID_BASIC3MONTH = "basic_3mo"; - public static String PLANID_BASIC6MONTH = "basic_6mo"; - public static String PLANID_GOOGLE6MONTH = "google_6mo"; - public static String PLANID_BASIC12MONTH = "basic_12mo"; - - @PrimaryKey - public String customerId; - public Date dateCreated; - public Date dateUpdated; - @Nullable - public Date dateTerminated; - @Nullable - public String paymentMethod; - @Nullable - public String planId; - public Integer gemsBought; - public Integer extraMonths; - public Integer quantity; - @Nullable - public SubscriptionPlanConsecutive consecutive; - - public int mysteryItemCount; - @SerializedName("owner") - public String ownerID; - - public boolean isGroupPlanSub() { - return customerId.equals("group-plan"); - } - - public boolean isGiftedSub() { - return customerId.equals("Gift"); - } - - public boolean isActive() { - Date today = new Date(); - return customerId != null && (this.dateTerminated == null || this.dateTerminated.after(today)); - } - - public int totalNumberOfGems() { - if (customerId == null || consecutive == null) { - return 0; - } - return 25 + consecutive.getGemCapExtra(); - } - - public int numberOfGemsLeft() { - return totalNumberOfGems() - gemsBought; - } - - public void setCustomerId(String customerId) { - this.customerId = customerId; - if (consecutive != null && !consecutive.isManaged()) { - consecutive.setCustomerId(customerId); - } - } -} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt new file mode 100644 index 000000000..9d91182af --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt @@ -0,0 +1,61 @@ +package com.habitrpg.android.habitica.models.user + +import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject +import io.realm.RealmObject +import io.realm.annotations.PrimaryKey +import java.util.* + +open class SubscriptionPlan : RealmObject(), BaseObject { + @PrimaryKey + var customerId: String? = null + set(value) { + field = value + if (consecutive != null && consecutive?.isManaged == true) { + consecutive?.customerId = value + } + } + var dateCreated: Date? = null + var dateUpdated: Date? = null + @JvmField + var dateTerminated: Date? = null + var paymentMethod: String? = null + @JvmField + var planId: String? = null + var gemsBought: Int? = null + var extraMonths: Int? = null + var quantity: Int? = null + var consecutive: SubscriptionPlanConsecutive? = null + var mysteryItemCount = 0 + + @SerializedName("owner") + var ownerID: String? = null + val isGroupPlanSub: Boolean + get() = customerId == "group-plan" + val isGiftedSub: Boolean + get() = customerId == "Gift" + val isActive: Boolean + get() { + val today = Date() + return customerId != null && (dateTerminated == null || dateTerminated!!.after(today)) + } + + fun totalNumberOfGems(): Int { + return if (customerId == null || consecutive == null) { + 0 + } else 25 + consecutive!!.gemCapExtra + } + + fun numberOfGemsLeft(): Int { + return totalNumberOfGems() - gemsBought!! + } + + companion object { + var PLANID_BASIC = "basic" + var PLANID_BASICEARNED = "basic_earned" + var PLANID_BASIC3MONTH = "basic_3mo" + var PLANID_BASIC6MONTH = "basic_6mo" + var PLANID_GOOGLE6MONTH = "google_6mo" + var PLANID_BASIC12MONTH = "basic_12mo" + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlanConsecutive.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlanConsecutive.kt index 05541cd6d..be911735a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlanConsecutive.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlanConsecutive.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class SubscriptionPlanConsecutive : RealmObject() { +open class SubscriptionPlanConsecutive : RealmObject(), BaseObject { @PrimaryKey var customerId: String? = null var subscriptionPlan: SubscriptionPlan? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SuppressedModals.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SuppressedModals.kt index ed69c1996..e9db582d5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SuppressedModals.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SuppressedModals.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class SuppressedModals : RealmObject() { +open class SuppressedModals : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null var preferences: Preferences? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Training.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Training.kt index 94819837d..6129a63cb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Training.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Training.kt @@ -1,10 +1,11 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class Training : RealmObject() { +open class Training : RealmObject(), BaseObject { @PrimaryKey var userId: String? = null var stats: Stats? = null 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 b6d3f75f4..866bb07e9 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 @@ -14,7 +14,7 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import java.util.* -open class User : RealmObject(), BaseObject, Avatar, VersionedObject { +open class User : RealmObject(), BaseMainObject, Avatar, VersionedObject { override val realmClass: Class get() = User::class.java diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/UserAchievement.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/UserAchievement.kt index 36cd0f5a4..732fa04dc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/UserAchievement.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/UserAchievement.kt @@ -1,9 +1,10 @@ package com.habitrpg.android.habitica.models.user +import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -open class UserAchievement : RealmObject { +open class UserAchievement() : RealmObject(), BaseObject { @PrimaryKey var combinedKey: String? = null @@ -18,7 +19,5 @@ open class UserAchievement : RealmObject { combinedKey = userId + field } var earned: Boolean = false - - constructor() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt index ba2676439..5f307a62e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt @@ -22,7 +22,6 @@ import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.activities.MainActivity import io.reactivex.rxjava3.functions.BiFunction -import io.realm.RealmResults import java.util.* import javax.inject.Inject @@ -62,12 +61,12 @@ class NotificationPublisher : BroadcastReceiver() { } val checkDailies = intent.getBooleanExtra(CHECK_DAILIES, false) if (checkDailies) { - taskRepository.getTasks(Task.TYPE_DAILY).firstElement().zipWith(userRepository.getUser().firstElement(), BiFunction, User, Pair, User>> { tasks, user -> + taskRepository.getTasks(Task.TYPE_DAILY).firstElement().zipWith(userRepository.getUser().firstElement(), BiFunction, User, Pair, User>> { tasks, user -> return@BiFunction Pair(tasks, user) }).subscribe({ pair -> var showNotifications = false for (task in pair.first) { - if (task?.checkIfDue() == true) { + if (task.checkIfDue()) { showNotifications = true break } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt index c0cf94b12..20f954b68 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt @@ -8,7 +8,6 @@ import android.widget.ProgressBar import android.widget.TableLayout import android.widget.TableRow import android.widget.TextView -import androidx.appcompat.widget.AppCompatEditText import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import com.facebook.drawee.backends.pipeline.Fresco @@ -35,15 +34,12 @@ import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel import com.habitrpg.android.habitica.ui.adapter.social.AchievementProfileAdapter -import com.habitrpg.android.habitica.ui.fragments.social.InboxOverviewFragmentDirections -import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard import com.habitrpg.android.habitica.ui.helpers.loadImage import com.habitrpg.android.habitica.ui.helpers.setMarkdown import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.Flowable -import io.realm.RealmResults import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay @@ -51,7 +47,6 @@ import kotlinx.coroutines.launch import java.text.SimpleDateFormat import java.util.* import javax.inject.Inject -import kotlin.coroutines.CoroutineContext import kotlin.math.floor import kotlin.math.min @@ -350,7 +345,7 @@ class FullProfileActivity : BaseActivity() { addAttributeRow(getString(R.string.profile_level), byLevelStat, byLevelStat, byLevelStat, byLevelStat, true, false) } - private fun loadItemDataByOutfit(outfit: Outfit?): Flowable> { + private fun loadItemDataByOutfit(outfit: Outfit?): Flowable> { val outfitList = ArrayList() if (outfit != null) { outfitList.add(outfit.armor) @@ -371,9 +366,7 @@ class FullProfileActivity : BaseActivity() { binding.equipmentTableLayout.removeAllViews() for (index in 1 until binding.attributesTableLayout.childCount) { - if (binding.attributesTableLayout != null) { - binding.attributesTableLayout.removeViewAt(index) - } + binding.attributesTableLayout.removeViewAt(index) } addLevelAttributes(user) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index b06d16c05..315f03ade 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -31,6 +31,7 @@ import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.helpers.TaskAlarmManager import com.habitrpg.android.habitica.models.Tag import com.habitrpg.android.habitica.models.social.Challenge +import com.habitrpg.android.habitica.models.tasks.ChecklistItem import com.habitrpg.android.habitica.models.tasks.HabitResetOption import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.user.Stats @@ -456,8 +457,10 @@ class TaskFormActivity : BaseActivity() { resultIntent.putExtra(TASK_TYPE_KEY, taskType) if (!isChallengeTask) { if (taskType == Task.TYPE_DAILY || taskType == Task.TYPE_TODO) { - thisTask.checklist = binding.checklistContainer.checklistItems - thisTask.reminders = binding.remindersContainer.reminders + thisTask.checklist = RealmList() + thisTask.checklist?.addAll(binding.checklistContainer.checklistItems) + thisTask.reminders = RealmList() + thisTask.reminders?.addAll(binding.remindersContainer.reminders) } thisTask.tags = RealmList() binding.tagsWrapper.forEachIndexed { index, view -> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt index 4fe60e7ad..df91df44b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt @@ -1,10 +1,6 @@ package com.habitrpg.android.habitica.ui.adapter import androidx.recyclerview.widget.RecyclerView -import com.habitrpg.android.habitica.models.tasks.Task -import com.habitrpg.android.habitica.ui.viewHolders.BindableViewHolder -import io.realm.OrderedRealmCollection -import io.realm.RealmModel abstract class BaseRecyclerViewAdapter: RecyclerView.Adapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt index caacacbbd..2dbe21a6d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt @@ -21,8 +21,6 @@ import com.habitrpg.android.habitica.ui.views.dialogs.DetailDialog import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import io.realm.OrderedRealmCollection -import io.realm.RealmResults import org.greenrobot.eventbus.EventBus import java.text.SimpleDateFormat import java.util.* @@ -34,7 +32,7 @@ class ItemRecyclerAdapter(val context: Context) : BaseRecyclerViewAdapter? = null + private var existingPets: List? = null private var ownedPets: Map? = null var items: Map? = null set(value) { @@ -71,7 +69,7 @@ class ItemRecyclerAdapter(val context: Context) : BaseRecyclerViewAdapter) { + fun setExistingPets(pets: List) { existingPets = pets notifyDataSetChanged() } @@ -94,7 +92,7 @@ class ItemRecyclerAdapter(val context: Context) : BaseRecyclerViewAdapter() { - private var existingMounts: RealmResults? = null + private var existingMounts: List? = null private var ownedPets: Map? = null private var ownedMounts: Map? = null private var ownedItems: Map? = null @@ -87,7 +86,7 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt override fun getItemCount(): Int = itemList.size - fun setExistingMounts(existingMounts: RealmResults) { + fun setExistingMounts(existingMounts: List) { this.existingMounts = existingMounts notifyDataSetChanged() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt index 22d92b9e2..8c7352ecd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt @@ -23,7 +23,6 @@ import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import io.realm.RealmResults class StableRecyclerAdapter : RecyclerView.Adapter() { @@ -34,7 +33,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { var itemType: String? = null private var user: User? = null private val equipEvents = PublishSubject.create() - private var existingMounts: RealmResults? = null + private var existingMounts: List? = null private var ownedMounts: Map? = null private var ownedItems: Map? = null private var ownsSaddles: Boolean = false @@ -77,7 +76,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { notifyDataSetChanged() } - fun setExistingMounts(existingMounts: RealmResults) { + fun setExistingMounts(existingMounts: List) { this.existingMounts = existingMounts notifyDataSetChanged() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt index a71669cc2..96c2cf00e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt @@ -18,8 +18,8 @@ import com.habitrpg.android.habitica.ui.helpers.EmojiParser import io.realm.OrderedRealmCollection class ChallengesListViewAdapter(private val viewUserChallengesOnly: Boolean, private val userId: String) : BaseRecyclerViewAdapter() { - private var unfilteredData: OrderedRealmCollection? = null - private var challengeMemberships: OrderedRealmCollection? = null + private var unfilteredData: List? = null + private var challengeMemberships: List? = null private val openChallengeFragmentEvents = PublishSubject.create() @@ -40,17 +40,15 @@ class ChallengesListViewAdapter(private val viewUserChallengesOnly: Boolean, pri } } - fun updateUnfilteredData(data: OrderedRealmCollection?) { + fun updateUnfilteredData(data: List?) { this.data = data ?: emptyList() unfilteredData = data } fun filter(filterOptions: ChallengeFilterOptions) { - if (unfilteredData == null) { - return - } + val unfilteredData = unfilteredData as? OrderedRealmCollection ?: return - var query = unfilteredData?.where() + var query = unfilteredData.where() if (filterOptions.showByGroups != null && filterOptions.showByGroups.size > 0) { val groupIds = arrayOfNulls(filterOptions.showByGroups.size) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt index 4c5d32449..81ad5a311 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt @@ -51,9 +51,9 @@ class GuildListAdapter : BaseRecyclerViewAdapter } } - private var unfilteredData: OrderedRealmCollection? = null + private var unfilteredData: List? = null - fun setUnfilteredData(data: OrderedRealmCollection?) { + fun setUnfilteredData(data: List?) { this.data = data ?: emptyList() unfilteredData = data } @@ -68,7 +68,7 @@ class GuildListAdapter : BaseRecyclerViewAdapter override fun publishResults(constraint: CharSequence, results: FilterResults) { unfilteredData?.let { - if (constraint.isNotEmpty()) { + if (constraint.isNotEmpty() && it is OrderedRealmCollection) { data = it.where() .beginGroup() .contains("name", constraint.toString(), Case.INSENSITIVE) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt index 9535f6986..517ec6ef7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt @@ -6,9 +6,7 @@ import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.ui.viewHolders.tasks.DailyViewHolder -import io.realm.OrderedRealmCollection - -class DailiesRecyclerViewHolder(data: OrderedRealmCollection?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { +class DailiesRecyclerViewHolder(data: List?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DailyViewHolder = DailyViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }, diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitsRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitsRecyclerViewAdapter.kt index 8a3714f80..acdfeccc4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitsRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/HabitsRecyclerViewAdapter.kt @@ -4,9 +4,8 @@ import android.view.ViewGroup import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.ui.viewHolders.tasks.HabitViewHolder -import io.realm.OrderedRealmCollection -class HabitsRecyclerViewAdapter(data: OrderedRealmCollection?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { +class HabitsRecyclerViewAdapter(data: List?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HabitViewHolder = HabitViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }, { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt index 311658247..5e6e97990 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt @@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.models.tasks.ChecklistItem import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter import com.habitrpg.android.habitica.ui.viewHolders.tasks.BaseTaskViewHolder -import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.functions.Action @@ -17,7 +16,7 @@ import io.reactivex.rxjava3.subjects.PublishSubject import io.realm.OrderedRealmCollection abstract class RealmBaseTasksRecyclerViewAdapter( - private var unfilteredData: OrderedRealmCollection?, + private var unfilteredData: List?, private val hasAutoUpdates: Boolean, private val layoutResource: Int, private val taskFilterHelper: TaskFilterHelper? @@ -35,26 +34,25 @@ abstract class RealmBaseTasksRecyclerViewAdapter( } } - private var errorButtonEventsSubject = PublishSubject.create() + private var errorButtonEventsSubject: PublishSubject = PublishSubject.create() override val errorButtonEvents: Flowable = errorButtonEventsSubject.toFlowable(BackpressureStrategy.DROP) - protected var taskScoreEventsSubject = PublishSubject.create>() + protected var taskScoreEventsSubject: PublishSubject> = PublishSubject.create() override val taskScoreEvents: Flowable> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.DROP) - protected var checklistItemScoreSubject = PublishSubject.create>() + protected var checklistItemScoreSubject: PublishSubject> = PublishSubject.create() override val checklistItemScoreEvents: Flowable> = checklistItemScoreSubject.toFlowable(BackpressureStrategy.DROP) - protected var taskOpenEventsSubject = PublishSubject.create() + protected var taskOpenEventsSubject: PublishSubject = PublishSubject.create() override val taskOpenEvents: Flowable = taskOpenEventsSubject.toFlowable(BackpressureStrategy.DROP) - protected var brokenTaskEventsSubject = PublishSubject.create() + protected var brokenTaskEventsSubject: PublishSubject = PublishSubject.create() override val brokenTaskEvents: Flowable = brokenTaskEventsSubject.toFlowable(BackpressureStrategy.DROP) init { - check(!(unfilteredData != null && unfilteredData?.isManaged == false)) { "Only use this adapter with managed RealmCollection, " + "for un-managed lists you can just use the BaseRecyclerViewAdapter" } this.updateOnModification = true filter() } override fun getItemId(index: Int): Long = index.toLong() - override fun updateUnfilteredData(data: OrderedRealmCollection?) { + override fun updateUnfilteredData(data: List?) { unfilteredData = data this.data = data ?: emptyList() } @@ -78,11 +76,13 @@ abstract class RealmBaseTasksRecyclerViewAdapter( final override fun filter() { val unfilteredData = this.unfilteredData ?: return - if (taskFilterHelper != null) { + if (taskFilterHelper != null && unfilteredData is OrderedRealmCollection) { val query = taskFilterHelper.createQuery(unfilteredData) if (query != null) { data = query.findAll() } + } else { + data = unfilteredData } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt index 873c1efc8..0b344096a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt @@ -17,28 +17,27 @@ import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import io.realm.OrderedRealmCollection -class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollection?, private val layoutResource: Int) : BaseRecyclerViewAdapter(), TaskRecyclerViewAdapter { +class RewardsRecyclerViewAdapter(private var customRewards: List?, private val layoutResource: Int) : BaseRecyclerViewAdapter(), TaskRecyclerViewAdapter { var user: User? = null set(value) { field = value notifyDataSetChanged() } override var canScoreTasks = true - private var inAppRewards: OrderedRealmCollection? = null + private var inAppRewards: List? = null - private val errorButtonEventsSubject = PublishSubject.create() + private val errorButtonEventsSubject: PublishSubject = PublishSubject.create() override val errorButtonEvents: Flowable = errorButtonEventsSubject.toFlowable(BackpressureStrategy.DROP) - private var taskScoreEventsSubject = PublishSubject.create>() + private var taskScoreEventsSubject: PublishSubject> = PublishSubject.create() override val taskScoreEvents: Flowable> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.LATEST) - private var checklistItemScoreSubject = PublishSubject.create>() + private var checklistItemScoreSubject: PublishSubject> = PublishSubject.create() override val checklistItemScoreEvents: Flowable> = checklistItemScoreSubject.toFlowable(BackpressureStrategy.DROP) - private var taskOpenEventsSubject = PublishSubject.create() + private var taskOpenEventsSubject: PublishSubject = PublishSubject.create() override val taskOpenEvents: Flowable = taskOpenEventsSubject.toFlowable(BackpressureStrategy.LATEST) - protected var brokenTaskEventsSubject = PublishSubject.create() + protected var brokenTaskEventsSubject: PublishSubject = PublishSubject.create() override val brokenTaskEvents: Flowable = brokenTaskEventsSubject.toFlowable(BackpressureStrategy.DROP) - private var purchaseCardSubject = PublishSubject.create() + private var purchaseCardSubject: PublishSubject = PublishSubject.create() val purchaseCardEvents: Flowable = purchaseCardSubject.toFlowable(BackpressureStrategy.LATEST) @@ -52,13 +51,13 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti private val inAppRewardCount: Int get() { - if (inAppRewards?.isValid != true) return 0 + //if (inAppRewards?.isValid != true) return 0 return inAppRewards?.size ?: 0 } private val customRewardCount: Int get() { - if (customRewards?.isValid != true) return 0 + //if (customRewards?.isValid != true) return 0 return customRewards?.size ?: 0 } @@ -114,7 +113,7 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti } } - override fun updateUnfilteredData(data: OrderedRealmCollection?) { + override fun updateUnfilteredData(data: List?) { updateData(data) } @@ -124,14 +123,14 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti return rewardCount } - fun updateData(tasks: OrderedRealmCollection?) { + fun updateData(tasks: List?) { this.customRewards = tasks notifyDataSetChanged() } - fun updateItemRewards(items: OrderedRealmCollection) { - if (items.size > 0) { - if (Task::class.java.isAssignableFrom(items.first()!!.javaClass)) { + fun updateItemRewards(items: List) { + if (items.isNotEmpty()) { + if (Task::class.java.isAssignableFrom(items.first().javaClass)) { //this catches a weird bug where the observable gets a list of tasks for no apparent reason. return } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt index a056b35d1..ebd1b8cfe 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt @@ -4,8 +4,6 @@ import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.tasks.ChecklistItem import com.habitrpg.android.habitica.models.tasks.Task import io.reactivex.rxjava3.core.Flowable -import io.realm.OrderedRealmCollection -import io.realm.RealmResults interface TaskRecyclerViewAdapter { var canScoreTasks: Boolean @@ -23,7 +21,7 @@ interface TaskRecyclerViewAdapter { fun getItemViewType(position: Int): Int fun getTaskIDAt(position: Int): String? - fun updateUnfilteredData(data: OrderedRealmCollection?) + fun updateUnfilteredData(data: List?) val taskScoreEvents: Flowable> val checklistItemScoreEvents: Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt index f735ca531..84a8fa2be 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt @@ -6,9 +6,7 @@ import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.ui.viewHolders.tasks.TodoViewHolder -import io.realm.OrderedRealmCollection - -class TodosRecyclerViewAdapter(data: OrderedRealmCollection?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { +class TodosRecyclerViewAdapter(data: List?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter(data, autoUpdate, layoutResource, taskFilterHelper) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder = TodoViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }, diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt index 8a61d1f9b..07792ce5c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt @@ -240,7 +240,7 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL compositeSubscription.add(inventoryRepository.getOwnedItems(type) .doOnNext { items -> val filteredItems = if (isFeeding) { - items.where().notEqualTo("key", "Saddle").findAll() + items.filter { it.key != "Saddle" } } else { items } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt index 030c365a6..d5d66f591 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt @@ -23,7 +23,6 @@ import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.kotlin.combineLatest -import io.realm.RealmResults import java.util.* import javax.inject.Inject @@ -136,7 +135,7 @@ class StableRecyclerFragment : BaseFragment() { } private fun loadItems() { - val observable: Maybe> = if ("pets" == itemType) { + val observable: Maybe> = if ("pets" == itemType) { inventoryRepository.getPets().firstElement() } else { inventoryRepository.getMounts().firstElement() @@ -181,9 +180,9 @@ class StableRecyclerFragment : BaseFragment() { .subscribe({ adapter?.setOwnedMounts(it) }, RxErrorHandler.handleEmptyError())) } - private fun mapAnimals(unsortedAnimals: RealmResults, ownedAnimals: Map): ArrayList { + private fun mapAnimals(unsortedAnimals: List, ownedAnimals: Map): ArrayList { val items = ArrayList() - var lastAnimal: Animal = unsortedAnimals[0] ?: return items + var lastAnimal: Animal = unsortedAnimals.firstOrNull() ?: return items var lastSection: StableSection? = null for (animal in unsortedAnimals) { val identifier = if (animal.animal.isNotEmpty() && (animal.type != "special" && animal.type != "wacky")) animal.animal else animal.key @@ -216,11 +215,11 @@ class StableRecyclerFragment : BaseFragment() { } val isOwned = when (itemType) { "pets" -> { - val ownedPet = ownedAnimals[animal?.key] as? OwnedPet + val ownedPet = ownedAnimals[animal.key] as? OwnedPet ownedPet?.trained ?: 0 > 0 } "mounts" -> { - val ownedMount = ownedAnimals[animal?.key] as? OwnedMount + val ownedMount = ownedAnimals[animal.key] as? OwnedMount ownedMount?.owned == true } else -> false diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillTasksRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillTasksRecyclerViewFragment.kt index cc10c2f4e..f20e1d56c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillTasksRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillTasksRecyclerViewFragment.kt @@ -62,9 +62,9 @@ class SkillTasksRecyclerViewFragment : BaseFragment super.onResume() var tasks = taskRepository.getTasks(taskType ?: "", userId) - .map { it.where().isNull("challengeID").and().isNull("group").findAll() } + .map { it.filter { it.challengeID == null && it.group == null } } if (taskType == Task.TYPE_TODO) { - tasks = tasks.map { it.where().equalTo("completed", false).findAll() } + tasks = tasks.map { it.filter { !it.completed } } } compositeSubscription.add(tasks.subscribe({ adapter.data = it diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt index b72324f68..6cfcc1e67 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatFragment.kt @@ -28,7 +28,6 @@ import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayTy import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.Disposable -import io.realm.RealmResults import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -193,7 +192,7 @@ class ChatFragment : BaseFragment() { } } - private fun setChatMessages(chatMessages: RealmResults) { + private fun setChatMessages(chatMessages: List) { chatAdapter?.data = chatMessages viewModel?.socialRepository?.getUnmanagedCopy(chatMessages)?.let { binding?.chatBarView?.chatMessages = it } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt index a562f342a..b629a34b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt @@ -21,7 +21,6 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.social.UsernameLabel -import io.realm.RealmResults import javax.inject.Inject import javax.inject.Named @@ -114,7 +113,7 @@ class InboxOverviewFragment : BaseMainFragment(), androidx binding.progressCircular.visibility = View.GONE }) } - alert.addButton(getString(R.string.action_cancel), false) { dialog, _ -> + alert.addButton(getString(R.string.action_cancel), false) { _, _ -> thisActivity.dismissKeyboard() } alert.setAdditionalContentView(binding.root) @@ -141,7 +140,7 @@ class InboxOverviewFragment : BaseMainFragment(), androidx retrieveMessages() } - private fun setInboxMessages(messages: RealmResults) { + private fun setInboxMessages(messages: List) { if (binding?.inboxMessages == null) { return } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt index 0d71a42db..ae8ea3a96 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.kt @@ -22,7 +22,6 @@ import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.utils.Action1 import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.kotlin.Flowables -import io.realm.RealmResults import javax.inject.Inject import javax.inject.Named @@ -50,7 +49,7 @@ class ChallengeListFragment : BaseFragment(), and private var nextPageToLoad = 0 private var loadedAllData = false - private var challenges: RealmResults? = null + private var challenges: List? = null private var filterGroups: MutableList? = null private var filterOptions: ChallengeFilterOptions? = null @@ -121,7 +120,7 @@ class ChallengeListFragment : BaseFragment(), and } private fun loadLocalChallenges() { - val observable: Flowable> = if (viewUserChallengesOnly) { + val observable: Flowable> = if (viewUserChallengesOnly) { challengeRepository.getUserChallenges() } else { challengeRepository.getChallenges() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt index a44a953ab..beb084526 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt @@ -36,7 +36,6 @@ import com.habitrpg.android.habitica.ui.viewHolders.GroupMemberViewHolder import com.habitrpg.android.habitica.ui.viewmodels.PartyViewModel import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog -import io.realm.RealmResults import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay @@ -236,7 +235,7 @@ class PartyDetailFragment : BaseFragment() { } } - private fun updateMembersList(members: RealmResults?) { + private fun updateMembersList(members: List?) { val leaderID = viewModel?.leaderID members?.forEachIndexed { index, member -> val memberView = (if (binding?.membersWrapper?.childCount ?: 0 > index) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt index 5f1c92f3c..01949fbda 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt @@ -19,7 +19,6 @@ import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.subjects.BehaviorSubject -import io.realm.RealmResults import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -123,7 +122,7 @@ open class GroupViewModel : BaseViewModel() { }, RxErrorHandler.handleEmptyError())) } - fun getChatMessages(): Flowable> { + fun getChatMessages(): Flowable> { return groupIDFlowable .filterMapEmpty() .flatMap { socialRepository.getGroupChat(it) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/PartyViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/PartyViewModel.kt index 643a43d0c..d121b72a0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/PartyViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/PartyViewModel.kt @@ -10,7 +10,6 @@ import com.habitrpg.android.habitica.models.members.Member import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.realm.RealmResults import org.greenrobot.eventbus.EventBus class PartyViewModel: GroupViewModel() { @@ -22,8 +21,8 @@ class PartyViewModel: GroupViewModel() { get() = !(getGroupData().value?.quest?.members?.none { it.key == getUserData().value?.id } ?: true) - private val members: MutableLiveData?> by lazy { - MutableLiveData?>() + private val members: MutableLiveData?> by lazy { + MutableLiveData?>() } init { @@ -35,7 +34,7 @@ class PartyViewModel: GroupViewModel() { component.inject(this) } - fun getMembersData(): LiveData?> = members + fun getMembersData(): LiveData?> = members private fun loadMembersFromLocal() { disposable.add(groupIDSubject.toFlowable(BackpressureStrategy.LATEST) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt index 3017c8761..c49eaac50 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt @@ -29,10 +29,10 @@ class EquipmentOverviewItem @JvmOverloads constructor( var identifier: String = "" - fun set(key: String, isTwoHanded: Boolean = false, isDisabledFromTwoHand: Boolean = false) { - identifier = key + fun set(key: String?, isTwoHanded: Boolean = false, isDisabledFromTwoHand: Boolean = false) { + identifier = key ?: "" binding.twoHandedIndicator.setImageDrawable(null) - if (key.isNotEmpty() && !key.endsWith("base_0")) { + if (identifier.isNotEmpty() && !identifier.endsWith("base_0")) { DataBindingUtils.loadImage(binding.iconView, "shop_$key") binding.localIconView.visibility = View.GONE binding.iconView.visibility = View.VISIBLE diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt index 99547763d..60b8d5129 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt @@ -33,14 +33,14 @@ class EquipmentOverviewView @JvmOverloads constructor( } - fun updateData(outfit: Outfit, isWeaponTwoHanded: Boolean = false) { - binding.weaponItem.set(outfit.weapon, isWeaponTwoHanded) - binding.shieldItem.set(outfit.shield, false, isWeaponTwoHanded) - binding.headItem.set(outfit.head) - binding.armorItem.set(outfit.armor) - binding.headAccessoryItem.set(outfit.headAccessory) - binding.bodyItem.set(outfit.body) - binding.backItem.set(outfit.back) - binding.eyewearItem.set(outfit.eyeWear) + fun updateData(outfit: Outfit?, isWeaponTwoHanded: Boolean = false) { + binding.weaponItem.set(outfit?.weapon, isWeaponTwoHanded) + binding.shieldItem.set(outfit?.shield, false, isWeaponTwoHanded) + binding.headItem.set(outfit?.head) + binding.armorItem.set(outfit?.armor) + binding.headAccessoryItem.set(outfit?.headAccessory) + binding.bodyItem.set(outfit?.body) + binding.backItem.set(outfit?.back) + binding.eyewearItem.set(outfit?.eyeWear) } } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt index 6be1f4c4d..dade7da2e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt @@ -43,7 +43,6 @@ import com.habitrpg.android.habitica.ui.views.tasks.form.StepperValueFormView import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.disposables.CompositeDisposable -import io.realm.RealmResults import kotlinx.coroutines.* import org.greenrobot.eventbus.EventBus import java.time.Duration @@ -441,7 +440,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop var totalCount = 20 var ownedCount = 0 var shouldWarn = true - var maybe: Maybe>? = null + var maybe: Maybe>? = null if (item.purchaseType == "eggs") { maybe = inventoryRepository.getPets(item.key, "quest", null).firstElement().filter { shouldWarn = it.size > 0 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt index 94981243b..d5f430948 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt @@ -34,7 +34,6 @@ import com.habitrpg.android.habitica.ui.views.ValueBar import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.realm.RealmList class QuestProgressView : LinearLayout { @@ -246,7 +245,7 @@ class QuestProgressView : LinearLayout { alert.show() } - private fun setCollectionViews(collection: RealmList, quest: QuestContent) { + private fun setCollectionViews(collection: List, quest: QuestContent) { val inflater = LayoutInflater.from(context) for (collect in collection) { val contentCollect = quest.getCollectWithKey(collect.key) ?: continue diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt index 1585ed10c..7c769a23c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt @@ -65,7 +65,7 @@ class SubscriptionDetailsView : LinearLayout { plan.dateTerminated != null -> binding.subscriptionDurationTextView.text = resources.getString(R.string.ending_on, DateFormat.getDateInstance().format(plan.dateTerminated ?: Date())) } - if (plan.extraMonths > 0) { + if ((plan.extraMonths ?: 0) > 0) { binding.subscriptionCreditWrapper.visibility = View.VISIBLE if (plan.extraMonths == 1) { binding.subscriptionCreditTextView.text = resources.getString(R.string.one_month) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistContainer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistContainer.kt index a25d66a84..b1dedd5a1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistContainer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistContainer.kt @@ -9,13 +9,12 @@ import androidx.core.view.updateMargins import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.models.tasks.ChecklistItem import com.habitrpg.android.habitica.ui.views.DragLinearLayout -import io.realm.RealmList class ChecklistContainer @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null) : DragLinearLayout(context, attrs) { - var checklistItems: RealmList + var checklistItems: List get() { - val list = RealmList() + val list = mutableListOf() for (child in children) { val view = child as? ChecklistItemFormView ?: continue if (view.item.text?.isNotEmpty() == true) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt index c45607e6a..163b04f52 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt @@ -10,7 +10,6 @@ import androidx.core.view.updateMargins import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.models.tasks.RemindersItem import com.habitrpg.android.habitica.models.tasks.Task -import io.realm.RealmList class ReminderContainer @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 @@ -24,9 +23,9 @@ class ReminderContainer @JvmOverloads constructor( } } } - var reminders: RealmList + var reminders: List get() { - val list = RealmList() + val list = mutableListOf() for (child in children) { val view = child as? ReminderItemFormView ?: continue if (view.item.time != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt index 1e9b05e47..266950b21 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt @@ -173,7 +173,7 @@ class YesterdailyDialog private constructor(context: Context, private val userRe .delay(500, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread()) .filter { !userRepository.isClosed } .flatMapMaybe { userRepository.getUser(userId).firstElement() } - .filter { user -> user.needsCron } + .filter { it.needsCron } .flatMapMaybe { val cal = Calendar.getInstance() cal.add(Calendar.DATE, -1) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/WorldStateSerialization.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/WorldStateSerialization.kt index 3af413e6a..cba08d4e7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/WorldStateSerialization.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/WorldStateSerialization.kt @@ -52,7 +52,7 @@ class WorldStateSerialization: JsonDeserializer { state.npcImageSuffix = obj.getAsString("npcImageSuffix") try { - if (obj.has("currentEvent") == true && obj.get("currentEvent")?.isJsonObject == true) { + if (obj.has("currentEvent") && obj.get("currentEvent")?.isJsonObject == true) { val event = obj.getAsJsonObject("currentEvent") if (event != null) { state.currentEvent = context?.deserialize(event, WorldStateEvent::class.java) diff --git a/build.gradle b/build.gradle index 2aa256bfa..20487b61d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.32' + ext.kotlin_version = '1.5.10' ext.build_tools_version = '29.0.0' ext.sdk_version = 30 @@ -11,7 +11,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:4.2.1' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:4.3.8' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.6.1' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index da26324ee..3a6ebcb83 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip