From 3371db97e09edb935ee538959a32c4a67c13366f Mon Sep 17 00:00:00 2001 From: Ashley Ng Date: Sat, 6 Oct 2018 20:01:35 -0500 Subject: [PATCH] deserialize Items and add to Member object --- Habitica/res/layout/activity_full_profile.xml | 17 +++++++++++++++-- .../android/habitica/models/members/Member.kt | 13 +++++++++++++ .../ui/activities/FullProfileActivity.kt | 14 ++++++++++++-- .../habitica/utils/MemberSerialization.java | 4 ++++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/Habitica/res/layout/activity_full_profile.xml b/Habitica/res/layout/activity_full_profile.xml index 4a5afda41..1d72cd035 100644 --- a/Habitica/res/layout/activity_full_profile.xml +++ b/Habitica/res/layout/activity_full_profile.xml @@ -365,7 +365,9 @@ android:layout_height="wrap_content" android:stretchColumns="0,1"> - + + > - + + 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 5e4145944..b3a54056b 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 @@ -78,6 +78,13 @@ open class Member : RealmObject(), Avatar { authentication.userId = this.id } } + var items: Items? = null + set(items) { + field = items + if (items != null && this.id != null && !items.isManaged) { + items.userId = this.id + } + } private var costume: Outfit? = null private var equipped: Outfit? = null @@ -92,6 +99,12 @@ open class Member : RealmObject(), Avatar { "" } else this.profile?.name ?: "" + val petsFoundCount: Int + get() = this.items?.pets?.size ?: 0 + + val mountsTamedCount: Int + get() = this.items?.mounts?.size ?: 0 + override fun getPreferences(): MemberPreferences? { return preferences } 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 3a4a82ca8..f42c1df3a 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 @@ -34,6 +34,7 @@ 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.AchievementAdapter +import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.helpers.KeyboardUtil import com.habitrpg.android.habitica.ui.helpers.MarkdownParser import com.habitrpg.android.habitica.ui.helpers.bindView @@ -70,6 +71,8 @@ class FullProfileActivity : BaseActivity() { private val fullprofile_scrollview: ScrollView by bindView(R.id.fullprofile_scrollview) private val petsFoundCount: TextView by bindView(R.id.profile_pets_found_count) private val mountsTamedCount: TextView by bindView(R.id.profile_mounts_tamed_count) + private val currentPetDrawee: SimpleDraweeView by bindView(R.id.current_pet_drawee) + private val currentMountDrawee: SimpleDraweeView by bindView(R.id.current_mount_drawee) private val achievementCard: CardView by bindView(R.id.profile_achievements_card) private val achievementProgress: ProgressBar by bindView(R.id.avatar_achievements_progress) private val achievementGroupList: RecyclerView by bindView(R.id.recyclerView) @@ -162,6 +165,7 @@ class FullProfileActivity : BaseActivity() { private fun updateView(user: Member) { val profile = user.profile ?: return + updatePetsMountsView(user) userName = profile.name title = profile.name @@ -210,13 +214,19 @@ class FullProfileActivity : BaseActivity() { costumeCard.visibility = View.GONE } - //petsFoundCount.setText(String.valueOf(user.getPetsFoundCount())); - //mountsTamedCount.setText(String.valueOf(user.getMountsTamedCount())); // Load the members achievements now socialRepository.getMemberAchievements(this.userId).subscribe(Consumer { this.fillAchievements(it) }, RxErrorHandler.handleEmptyError()) } + private fun updatePetsMountsView(user: Member) { + petsFoundCount.text = user.petsFoundCount.toString() + mountsTamedCount.text = user.mountsTamedCount.toString() + + DataBindingUtils.loadImage(this.currentPetDrawee, "Pet-" + user.currentPet) + DataBindingUtils.loadImage(this.currentMountDrawee, "Mount_Icon_" + user.currentMount) + } + // endregion // region Attributes diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/MemberSerialization.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/MemberSerialization.java index 9281b7471..13b8c99ec 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/MemberSerialization.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/MemberSerialization.java @@ -12,6 +12,7 @@ import com.habitrpg.android.habitica.models.social.UserParty; import com.habitrpg.android.habitica.models.user.Authentication; import com.habitrpg.android.habitica.models.user.ContributorInfo; import com.habitrpg.android.habitica.models.user.Inbox; +import com.habitrpg.android.habitica.models.user.Items; import com.habitrpg.android.habitica.models.user.Outfit; import com.habitrpg.android.habitica.models.user.Profile; import com.habitrpg.android.habitica.models.user.Stats; @@ -87,6 +88,9 @@ public class MemberSerialization implements JsonDeserializer { if (obj.has("loginIncentives")) { member.setLoginIncentives(obj.get("loginIncentives").getAsInt()); } + if (obj.has("items")) { + member.setItems(context.deserialize(obj.get("items"), Items.class)); + } member.setId(member.getId());