mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-14 02:01:56 +00:00
Fix
This commit is contained in:
parent
5e6e2cfc9e
commit
d352c5dea4
3 changed files with 19 additions and 19 deletions
|
|
@ -143,13 +143,12 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli
|
|||
path += user?.preferences?.background
|
||||
}
|
||||
return zipWithLiveUser(apiClient.unlockPath(path)) { unlockResponse, copiedUser ->
|
||||
localRepository.modify(copiedUser) { copiedUser ->
|
||||
copiedUser.preferences = unlockResponse.preferences
|
||||
copiedUser.purchased = unlockResponse.purchased
|
||||
copiedUser.items = unlockResponse.items
|
||||
copiedUser.balance = copiedUser.balance - (customization.price ?: 0) / 4.0
|
||||
localRepository.saveUser(copiedUser, false)
|
||||
}
|
||||
val user = localRepository.getUnmanagedCopy(copiedUser)
|
||||
user.preferences = unlockResponse.preferences
|
||||
user.purchased = unlockResponse.purchased
|
||||
user.items = unlockResponse.items
|
||||
user.balance = copiedUser.balance - (customization.price ?: 0) / 4.0
|
||||
localRepository.saveUser(copiedUser, false)
|
||||
unlockResponse
|
||||
}
|
||||
}
|
||||
|
|
@ -164,7 +163,7 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli
|
|||
}
|
||||
path = path.substring(1)
|
||||
return Flowable.zip(apiClient.unlockPath(path), localRepository.getUser(userID).firstElement().toFlowable()
|
||||
.map { localRepository.getLiveObject(it) }
|
||||
.map { localRepository.getUnmanagedCopy(it) }
|
||||
.skipNil(), { unlockResponse, copiedUser ->
|
||||
copiedUser.preferences = unlockResponse.preferences
|
||||
copiedUser.purchased = unlockResponse.purchased
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ 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 {
|
||||
|
|
@ -72,7 +73,7 @@ abstract class RealmBaseLocalRepository internal constructor(override var realm:
|
|||
|
||||
override fun <T: BaseObject> modify(obj: T, transaction: (T) -> Unit) {
|
||||
if (isClosed) { return }
|
||||
val liveObject = getLiveObject(obj) ?: return
|
||||
val liveObject = getLiveObject(obj) ?: return
|
||||
realm.executeTransaction {
|
||||
transaction(liveObject)
|
||||
}
|
||||
|
|
@ -88,6 +89,7 @@ abstract class RealmBaseLocalRepository internal constructor(override var realm:
|
|||
|
||||
override fun <T: RealmModel> getLiveObject(obj: T): T? {
|
||||
if (isClosed) return null
|
||||
if (!obj.isManaged()) return obj
|
||||
val baseObject = obj as? BaseObject ?: return null
|
||||
return realm.where(baseObject.realmClass).equalTo(baseObject.primaryIdentifierName, baseObject.primaryIdentifier).findFirst() as? T
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,18 +31,17 @@ class PushNotificationManager(var apiClient: ApiClient, private val sharedPrefer
|
|||
}
|
||||
|
||||
fun addPushDeviceUsingStoredToken() {
|
||||
if (this.refreshedToken.isEmpty()) {
|
||||
this.refreshedToken = FirebaseMessaging.getInstance().token.result
|
||||
}
|
||||
FirebaseMessaging.getInstance().token.addOnCompleteListener {
|
||||
this.refreshedToken = it.result
|
||||
if (this.refreshedToken.isEmpty() || this.user == null || this.userHasPushDevice() || !this.userIsSubscribedToNotifications()) {
|
||||
return@addOnCompleteListener
|
||||
}
|
||||
|
||||
if (this.refreshedToken.isEmpty() || this.user == null || this.userHasPushDevice() || !this.userIsSubscribedToNotifications()) {
|
||||
return
|
||||
val pushDeviceData = HashMap<String, String>()
|
||||
pushDeviceData["regId"] = this.refreshedToken
|
||||
pushDeviceData["type"] = "android"
|
||||
apiClient.addPushDevice(pushDeviceData).subscribe({ }, RxErrorHandler.handleEmptyError())
|
||||
}
|
||||
|
||||
val pushDeviceData = HashMap<String, String>()
|
||||
pushDeviceData["regId"] = this.refreshedToken
|
||||
pushDeviceData["type"] = "android"
|
||||
apiClient.addPushDevice(pushDeviceData).subscribe({ }, RxErrorHandler.handleEmptyError())
|
||||
}
|
||||
|
||||
fun removePushDeviceUsingStoredToken() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue