Fix inviting to guilds

This commit is contained in:
Phillip Thelen 2021-10-04 15:12:34 +02:00
parent 9e3ba67f13
commit 66af24813a
9 changed files with 49 additions and 18 deletions

View file

@ -36,9 +36,8 @@
android:textSize="12sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/bottomView"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_height="28dp"
android:orientation="horizontal"
android:gravity="center_vertical"
tools:background="?colorPrimaryDark"
@ -73,4 +72,28 @@
tools:text="+1"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/rage_view"
android:layout_width="match_parent"
android:layout_height="28dp"
android:orientation="horizontal"
android:gravity="center_vertical"
tools:background="?colorPrimaryDark"
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_large">
<ImageView
android:id="@+id/rageIconView"
android:layout_width="@dimen/icon_size"
android:layout_height="@dimen/icon_size"
android:layout_marginEnd="@dimen/spacing_small"/>
<com.habitrpg.android.habitica.ui.views.HabiticaProgressBar
android:id="@+id/rageBarView"
android:layout_width="0dp"
android:layout_height="8dp"
android:layout_weight="1"
android:paddingTop="@dimen/spacing_medium"
android:paddingBottom="@dimen/spacing_small"
app:barForegroundColor="@color/yellow_50"
app:barBackgroundColor="@color/content_15_alpha"/>
</LinearLayout>
</merge>

View file

@ -218,7 +218,7 @@ interface ApiService {
fun seenMessages(@Path("gid") groupId: String): Flowable<HabitResponse<Void>>
@POST("groups/{gid}/invite")
fun inviteToGroup(@Path("gid") groupId: String, @Body inviteData: Map<String, Any>): Flowable<HabitResponse<Void>>
fun inviteToGroup(@Path("gid") groupId: String, @Body inviteData: Map<String, Any>): Flowable<HabitResponse<List<Void>>>
@POST("groups/{gid}/reject-invite")
fun rejectGroupInvite(@Path("gid") groupId: String): Flowable<HabitResponse<Void>>

View file

@ -153,7 +153,7 @@ interface ApiClient {
fun seenMessages(groupId: String): Flowable<Void>
fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): Flowable<Void>
fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): Flowable<List<Void>>
fun rejectGroupInvite(groupId: String): Flowable<Void>

View file

@ -51,7 +51,7 @@ interface SocialRepository : BaseRepository {
fun getGroupMembers(id: String): Flowable<out List<Member>>
fun retrieveGroupMembers(id: String, includeAllPublicFields: Boolean): Flowable<List<Member>>
fun inviteToGroup(id: String, inviteData: Map<String, Any>): Flowable<Void>
fun inviteToGroup(id: String, inviteData: Map<String, Any>): Flowable<List<Void>>
fun getMember(userId: String?): Flowable<Member>
fun getMemberWithUsername(username: String?): Flowable<Member>

View file

@ -554,7 +554,7 @@ class ApiClientImpl // private OnHabitsAPIResult mResultListener;
return apiService.seenMessages(groupId).compose(configureApiCallObserver())
}
override fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): Flowable<Void> {
override fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): Flowable<List<Void>> {
return apiService.inviteToGroup(groupId, inviteData).compose(configureApiCallObserver())
}

View file

@ -241,7 +241,7 @@ class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: Ap
.doOnNext { members -> localRepository.saveGroupMembers(id, members) }
}
override fun inviteToGroup(id: String, inviteData: Map<String, Any>): Flowable<Void> = apiClient.inviteToGroup(id, inviteData)
override fun inviteToGroup(id: String, inviteData: Map<String, Any>): Flowable<List<Void>> = apiClient.inviteToGroup(id, inviteData)
override fun getMember(userId: String?): Flowable<Member> {
return if (userId == null) {

View file

@ -280,6 +280,7 @@ class NavigationDrawerFragment : DialogFragment() {
it.quest?.key ?: ""
}
.flatMapMaybe { inventoryRepository.getQuestContent(it).firstElement() }
.filter { (it.boss?.hp ?: 0) > 0 }
.subscribe(
{
questContent = it

View file

@ -112,23 +112,24 @@ class GuildDetailFragment : BaseFragment<FragmentGuildDetailBinding>() {
if (it.resultCode == Activity.RESULT_OK) {
val inviteData = HashMap<String, Any>()
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<HashMap<String, String>>()
emails?.forEach { email ->
emails.forEach { email ->
val invite = HashMap<String, String>()
invite["name"] = ""
invite["email"] = email
invites.add(invite)
}
inviteData["emails"] = invites
} else {
val userIDs = it.data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY)
val invites = mutableListOf<String>()
userIDs?.forEach { invites.add(it) }
}
val userIDs = it.data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY)
if (userIDs != null && userIDs.isNotEmpty()) {
val invites = ArrayList<String>()
userIDs.forEach { invites.add(it) }
inviteData["usernames"] = invites
}
viewModel?.inviteToGroup(inviteData)
viewModel.inviteToGroup(inviteData)
}
}

View file

@ -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) {