From 66af24813ae546c9c0cbe89bdb39cc303cec7bf9 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 4 Oct 2021 15:12:34 +0200 Subject: [PATCH] Fix inviting to guilds --- Habitica/res/layout/quest_menu_view.xml | 27 +++++++++++++++++-- .../android/habitica/api/ApiService.kt | 2 +- .../android/habitica/data/ApiClient.kt | 2 +- .../android/habitica/data/SocialRepository.kt | 2 +- .../data/implementation/ApiClientImpl.kt | 2 +- .../implementation/SocialRepositoryImpl.kt | 2 +- .../ui/fragments/NavigationDrawerFragment.kt | 1 + .../social/guilds/GuildDetailFragment.kt | 17 ++++++------ .../habitica/ui/views/social/QuestMenuView.kt | 12 ++++++--- 9 files changed, 49 insertions(+), 18 deletions(-) diff --git a/Habitica/res/layout/quest_menu_view.xml b/Habitica/res/layout/quest_menu_view.xml index d519ec75e..a156a763f 100644 --- a/Habitica/res/layout/quest_menu_view.xml +++ b/Habitica/res/layout/quest_menu_view.xml @@ -36,9 +36,8 @@ android:textSize="12sp"/> + + + + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt index 795d5463c..4c9a92965 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt @@ -218,7 +218,7 @@ interface ApiService { fun seenMessages(@Path("gid") groupId: String): Flowable> @POST("groups/{gid}/invite") - fun inviteToGroup(@Path("gid") groupId: String, @Body inviteData: Map): Flowable> + fun inviteToGroup(@Path("gid") groupId: String, @Body inviteData: Map): Flowable>> @POST("groups/{gid}/reject-invite") fun rejectGroupInvite(@Path("gid") groupId: String): Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt index 88586a755..c3a7eed58 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt @@ -153,7 +153,7 @@ interface ApiClient { fun seenMessages(groupId: String): Flowable - fun inviteToGroup(groupId: String, inviteData: Map): Flowable + fun inviteToGroup(groupId: String, inviteData: Map): Flowable> fun rejectGroupInvite(groupId: String): 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 61da77a81..68db3419d 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 @@ -51,7 +51,7 @@ interface SocialRepository : BaseRepository { fun getGroupMembers(id: String): Flowable> fun retrieveGroupMembers(id: String, includeAllPublicFields: Boolean): Flowable> - fun inviteToGroup(id: String, inviteData: Map): Flowable + fun inviteToGroup(id: String, inviteData: Map): Flowable> fun getMember(userId: String?): Flowable fun getMemberWithUsername(username: String?): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt index c6d60fcd5..38c17e637 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt @@ -554,7 +554,7 @@ class ApiClientImpl // private OnHabitsAPIResult mResultListener; return apiService.seenMessages(groupId).compose(configureApiCallObserver()) } - override fun inviteToGroup(groupId: String, inviteData: Map): Flowable { + override fun inviteToGroup(groupId: String, inviteData: Map): Flowable> { return apiService.inviteToGroup(groupId, inviteData).compose(configureApiCallObserver()) } 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 c58fabf92..784a45634 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 @@ -241,7 +241,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap .doOnNext { members -> localRepository.saveGroupMembers(id, members) } } - override fun inviteToGroup(id: String, inviteData: Map): Flowable = apiClient.inviteToGroup(id, inviteData) + override fun inviteToGroup(id: String, inviteData: Map): Flowable> = apiClient.inviteToGroup(id, inviteData) override fun getMember(userId: String?): Flowable { return if (userId == null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragment.kt index 07fe20db1..452d898e5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragment.kt @@ -280,6 +280,7 @@ class NavigationDrawerFragment : DialogFragment() { it.quest?.key ?: "" } .flatMapMaybe { inventoryRepository.getQuestContent(it).firstElement() } + .filter { (it.boss?.hp ?: 0) > 0 } .subscribe( { questContent = it diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt index 1a80da036..c0b64f33c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt @@ -112,23 +112,24 @@ class GuildDetailFragment : BaseFragment() { if (it.resultCode == Activity.RESULT_OK) { val inviteData = HashMap() inviteData["inviter"] = viewModel?.user?.value?.profile?.name ?: "" - if (it.data?.getBooleanExtra(GroupInviteActivity.IS_EMAIL_KEY, false) == true) { - val emails = it.data?.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY) + val emails = it.data?.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY) + if (emails != null && emails.isNotEmpty()) { val invites = ArrayList>() - emails?.forEach { email -> + emails.forEach { email -> val invite = HashMap() invite["name"] = "" invite["email"] = email invites.add(invite) } inviteData["emails"] = invites - } else { - val userIDs = it.data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY) - val invites = mutableListOf() - userIDs?.forEach { invites.add(it) } + } + val userIDs = it.data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY) + if (userIDs != null && userIDs.isNotEmpty()) { + val invites = ArrayList() + userIDs.forEach { invites.add(it) } inviteData["usernames"] = invites } - viewModel?.inviteToGroup(inviteData) + viewModel.inviteToGroup(inviteData) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt index 4e0f0bfe9..3e80cb578 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt @@ -36,6 +36,7 @@ class QuestMenuView : LinearLayout { orientation = VERTICAL binding.heartIconView.setImageBitmap(HabiticaIconsHelper.imageOfHeartDarkBg()) + binding.rageIconView.setImageBitmap(HabiticaIconsHelper.imageOfRage()) binding.pendingDamageIconView.setImageBitmap(HabiticaIconsHelper.imageOfDamage()) @@ -50,16 +51,21 @@ class QuestMenuView : LinearLayout { fun configure(quest: Quest) { binding.healthBarView.setCurrentValue(quest.progress?.hp ?: 0.0) + binding.rageBarView.setCurrentValue(quest.progress?.rage ?: 0.0) } fun configure(questContent: QuestContent) { this.questContent = questContent binding.healthBarView.setMaxValue(questContent.boss?.hp?.toDouble() ?: 0.0) - binding.bottomView.setBackgroundColor(questContent.colors?.darkColor ?: 0) - //binding.bossArtView.setBackgroundColor(questContent.colors?.mediumColor ?: 0) - //DataBindingUtils.loadImage(binding.bossArtView, "quest_" + questContent.key) binding.bossNameView.text = questContent.boss?.name binding.typeTextView.text = context.getString(R.string.boss_quest) + + if (questContent.boss?.hasRage == true) { + binding.rageView.visibility = View.VISIBLE + binding.rageBarView.setMaxValue(questContent.boss?.rage?.value ?: 0.0) + } else { + binding.rageView.visibility = View.GONE + } } fun configure(user: User) {