diff --git a/Habitica/res/layout/fragment_guild_detail.xml b/Habitica/res/layout/fragment_guild_detail.xml index 4abd14f65..cd2ffda3f 100644 --- a/Habitica/res/layout/fragment_guild_detail.xml +++ b/Habitica/res/layout/fragment_guild_detail.xml @@ -23,6 +23,80 @@ tools:text="Awesome Party" android:gravity="center" android:layout_margin="@dimen/spacing_large" /> + + + + + + + + + + + + + + + + + + + + app:identifier="guildDescription"> diff --git a/Habitica/res/navigation/navigation.xml b/Habitica/res/navigation/navigation.xml index e72ee6438..113db2cce 100644 --- a/Habitica/res/navigation/navigation.xml +++ b/Habitica/res/navigation/navigation.xml @@ -290,4 +290,7 @@ + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 547a3ea51..269682ed0 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -906,4 +906,7 @@ Either a Habit, a Daily or a To-Do Tap here to edit this into a bad habit you\'d like to quit Or delete it from the edit screen + Guild Summary + Guild Members + Guild Bank diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt index 64449c987..ffa20a5d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt @@ -82,22 +82,24 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) } override fun getPublicGuilds(): Flowable> = realm.where(Group::class.java) - .equalTo("type", "guild") - .equalTo("privacy", "public") - .sort("memberCount", Sort.DESCENDING) + .equalTo("type", "guild") + .equalTo("privacy", "public") + .notEqualTo("id", Group.TAVERN_ID) + .sort("memberCount", Sort.DESCENDING) .findAll() - .asFlowable() - .filter { it.isLoaded } + .asFlowable() + .filter { it.isLoaded } override fun getUserGroups(userID: String): Flowable> = realm.where(GroupMembership::class.java) .equalTo("userID", userID) .findAll() .asFlowable() .filter { it.isLoaded } - .flatMap { + .flatMap {memberships -> realm.where(Group::class.java) .equalTo("type", "guild") - .`in`("id", it.map { + .notEqualTo("id", Group.TAVERN_ID) + .`in`("id", memberships.map { return@map it.groupID }.toTypedArray()) .sort("memberCount", Sort.DESCENDING) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt index 8fc53f7f0..a885d956f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Group.kt @@ -51,4 +51,9 @@ open class Group : RealmObject() { get() { return quest?.active ?: false } + + val gemCount: Int + get() { + return (balance * 4.0).toInt() + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index ef82126e0..bf3d6999b 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -715,7 +715,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { val sharingIntent = Intent(Intent.ACTION_SEND) sharingIntent.type = "*/*" sharingIntent.putExtra(Intent.EXTRA_TEXT, event.sharedMessage) - val f = BitmapUtils.saveToShareableFile(filesDir.toString() + "/shared_images", "share.png", event.shareImage) + val f = BitmapUtils.saveToShareableFile("$filesDir/shared_images", "share.png", event.shareImage) val fileUri = FileProvider.getUriForFile(this, getString(R.string.content_provider), f) sharingIntent.putExtra(Intent.EXTRA_STREAM, fileUri) val resInfoList = this.packageManager.queryIntentActivities(sharingIntent, PackageManager.MATCH_DEFAULT_ONLY) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildDetailFragment.kt index 489a0c3df..c63781573 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildDetailFragment.kt @@ -8,12 +8,15 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.Observer import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.habitrpg.android.habitica.MainNavDirections import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.AppComponent import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.models.members.Member import com.habitrpg.android.habitica.models.social.Group import com.habitrpg.android.habitica.models.user.User @@ -25,6 +28,8 @@ import com.habitrpg.android.habitica.ui.helpers.MarkdownParser import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.helpers.resetViews import com.habitrpg.android.habitica.ui.viewmodels.GroupViewModel +import com.habitrpg.android.habitica.ui.views.HabiticaIcons +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.social.UsernameLabel import javax.inject.Inject @@ -36,7 +41,13 @@ class GuildDetailFragment : BaseFragment() { val refreshLayout: SwipeRefreshLayout by bindView(R.id.refreshLayout) private val guildTitleView: TextView by bindView(R.id.title_view) + private val guildMembersIconView: ImageView by bindView(R.id.guild_members_icon) + private val guildMembersTextView: TextView by bindView(R.id.guild_members_text) + private val guildBankIconView: ImageView by bindView(R.id.guild_bank_icon) + private val guildBankTextView: TextView by bindView(R.id.guild_bank_text) + private val guildSummaryView: TextView by bindView(R.id.guild_summary) private val guildDescriptionView: TextView by bindView(R.id.guild_description) + private val leaderWrapperView: ViewGroup by bindView(R.id.leader_wrapper) private val leaderAvatarView: AvatarView by bindView(R.id.leader_avatar_view) private val leaderProfileNameView: UsernameLabel by bindView(R.id.leader_profile_name) private val leaderUsernameView: TextView by bindView(R.id.leader_username) @@ -62,7 +73,7 @@ class GuildDetailFragment : BaseFragment() { viewModel?.getIsMemberData()?.observe(viewLifecycleOwner, Observer { updateMembership(it) }) guildDescriptionView.movementMethod = LinkMovementMethod.getInstance() - + guildBankIconView.setImageBitmap(HabiticaIconsHelper.imageOfGem()) leaveGuildButton.setOnClickListener { viewModel?.leaveGroup { val activity = activity as? MainActivity @@ -79,6 +90,12 @@ class GuildDetailFragment : BaseFragment() { } } } + leaderWrapperView.setOnClickListener { + viewModel?.getGroupData()?.value?.leaderID?.let {leaderID -> + val profileDirections = MainNavDirections.openProfileActivity(leaderID) + MainNavigationController.navigate(profileDirections) + } + } } private fun setLeader(leader: Member?) { @@ -119,6 +136,10 @@ class GuildDetailFragment : BaseFragment() { private fun updateGuild(guild: Group?) { guildTitleView.text = guild?.name + guildMembersIconView.setImageBitmap(HabiticaIcons.imageOfGuildCrestMedium((guild?.memberCount ?: 0).toFloat())) + guildMembersTextView.text = guild?.memberCount.toString() + guildBankTextView.text = guild?.gemCount.toString() + guildSummaryView.text = MarkdownParser.parseMarkdown(guild?.summary) guildDescriptionView.text = MarkdownParser.parseMarkdown(guild?.description) }