From f46ce3d2f04334f4b1c56d07e8901748e9c56769 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 9 Nov 2020 15:07:26 +0100 Subject: [PATCH] Fixes 1369 --- .../com/habitrpg/android/habitica/data/UserRepository.kt | 2 +- .../habitica/data/implementation/UserRepositoryImpl.kt | 3 ++- .../ui/adapter/CustomizationRecyclerViewAdapter.kt | 2 +- .../inventory/customization/AvatarCustomizationFragment.kt | 7 ++++++- 4 files changed, 10 insertions(+), 4 deletions(-) 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 3061fbbb7..f920a9692 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 @@ -46,7 +46,7 @@ interface UserRepository : BaseRepository { fun changeClass(selectedClass: String): Flowable - fun unlockPath(user: User, customization: Customization): Flowable + fun unlockPath(user: User?, customization: Customization): Flowable fun unlockPath(user: User, set: CustomizationSet): Flowable fun runCron(tasks: MutableList) 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 7af87c521..b9772ca7c 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 @@ -135,9 +135,10 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli override fun changeClass(selectedClass: String): Flowable = apiClient.changeClass(selectedClass).flatMap { retrieveUser(false) } - override fun unlockPath(user: User, customization: Customization): Flowable { + override fun unlockPath(user: User?, customization: Customization): Flowable { return apiClient.unlockPath(customization.path) .doOnNext { unlockResponse -> + if (user == null) return@doOnNext val copiedUser = localRepository.getUnmanagedCopy(user) copiedUser.preferences = unlockResponse.preferences copiedUser.purchased = unlockResponse.purchased diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt index e391b060a..28ddd3fd5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt @@ -211,7 +211,7 @@ class CustomizationRecyclerViewAdapter : androidx.recyclerview.widget.RecyclerVi return } - if (customization?.identifier == activeCustomization) { + if (customization?.type != "background" && customization?.identifier == activeCustomization) { return } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt index 759f65c37..d69479ab1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt @@ -45,7 +45,12 @@ class AvatarCustomizationFragment : BaseMainFragment - userRepository.useCustomization(user, customization.type ?: "", customization.category, customization.identifier ?: "") + if (customization.type == "background") { + userRepository.unlockPath(user, customization) + .flatMap { userRepository.retrieveUser(false) } + } else { + userRepository.useCustomization(user, customization.type ?: "", customization.category, customization.identifier ?: "") + } } .subscribe({ }, RxErrorHandler.handleEmptyError())) compositeSubscription.add(adapter.getUnlockCustomizationEvents()