From fbeaef460c21bc9f138ceedb0fa9f01237709c5d Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 17 Apr 2019 15:41:41 +0200 Subject: [PATCH] add option to link users to party wanted guild from party screen. Fixes #1126 --- Habitica/res/navigation/navigation.xml | 3 ++- Habitica/res/values/strings.xml | 1 + Habitica/res/xml/remote_config_defaults.xml | 4 ++++ .../habitica/helpers/NotificationOpenHandler.kt | 8 ++++---- .../habitica/helpers/RemoteConfigManager.kt | 4 ++++ .../habitica/ui/activities/MainActivity.kt | 2 ++ .../fragments/social/GroupInformationFragment.kt | 16 ++++++++++++++++ .../fragments/social/InboxMessageListFragment.kt | 2 +- 8 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Habitica/res/navigation/navigation.xml b/Habitica/res/navigation/navigation.xml index 29df58523..5047dc638 100644 --- a/Habitica/res/navigation/navigation.xml +++ b/Habitica/res/navigation/navigation.xml @@ -211,7 +211,8 @@ app:argType="string" /> + app:argType="string" + app:nullable="true" /> Take on quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties. Play Habitica in a Party Give a Party member the username found below and they can send you an invite + Give the username below to a friend or head to the %s to meet potential comrades!e Give them your User ID or have them scan your QR code while inviting Want to join a party? Open website to create party diff --git a/Habitica/res/xml/remote_config_defaults.xml b/Habitica/res/xml/remote_config_defaults.xml index 9bc823c69..8f31e17e2 100644 --- a/Habitica/res/xml/remote_config_defaults.xml +++ b/Habitica/res/xml/remote_config_defaults.xml @@ -32,5 +32,9 @@ lastVersionCode 0 + + noPartyLinkPartyGuild + false + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationOpenHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationOpenHandler.kt index 31466bf69..6c50b9485 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationOpenHandler.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationOpenHandler.kt @@ -33,7 +33,7 @@ class NotificationOpenHandler { if (userID?.isNotEmpty() == true) { return } - MainNavigationController.navigate(R.id.inboxFragment, bundleOf("userId" to userID)) + MainNavigationController.navigate(R.id.inboxMessageListFragment, bundleOf("userID" to userID)) } private fun openPartyScreen() { @@ -44,14 +44,14 @@ class NotificationOpenHandler { if (partyId?.isNotEmpty() == true || questKey?.isNotEmpty() == true) { return } - MainNavigationController.navigate(R.id.inboxFragment, bundleOf("partyId" to partyId, "questKey" to questKey)) + MainNavigationController.navigate(R.id.questDetailFragment, bundleOf("partyID" to partyId, "questKey" to questKey)) } private fun openGuildDetailScreen(groupID: String) { if (groupID.isEmpty()) { return } - MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupId" to groupID)) + MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupID" to groupID)) } @@ -63,7 +63,7 @@ class NotificationOpenHandler { when (type) { "party" -> MainNavigationController.navigate(R.id.partyFragment) "tavern" -> MainNavigationController.navigate(R.id.tavernFragment) - "guild" -> MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupId" to groupID)) + "guild" -> MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupID" to groupID)) } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemoteConfigManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemoteConfigManager.kt index 447d99249..4002b888c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemoteConfigManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RemoteConfigManager.kt @@ -52,4 +52,8 @@ class RemoteConfigManager { fun lastVersionCode(): Long { return remoteConfig.getLong("lastVersionCode") } + + fun noPartyLinkPartyGuild(): Boolean { + return remoteConfig.getBoolean("noPartyLinkPartyGuild") + } } 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 affaf5c4f..6bd78cb8e 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 @@ -34,6 +34,7 @@ import androidx.core.content.edit import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import com.facebook.drawee.view.SimpleDraweeView +import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.perf.FirebasePerformance import com.habitrpg.android.habitica.HabiticaBaseApplication import com.habitrpg.android.habitica.R @@ -646,6 +647,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction { if (hostConfig.hasAuthentication()) { this.userRepository.retrieveUser(true) .doOnNext { user1 -> + FirebaseAnalytics.getInstance(this).setUserProperty("has_party", if (user1.party?.id?.isNotEmpty() == true) "true" else "false") pushNotificationManager.setUser(user1) pushNotificationManager.addPushDeviceUsingStoredToken() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt index be6611595..51076be07 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt @@ -9,15 +9,21 @@ import android.graphics.Bitmap import android.graphics.Shader import android.graphics.drawable.BitmapDrawable import android.os.Bundle +import android.text.Html import android.text.method.LinkMovementMethod import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.net.toUri +import androidx.core.os.bundleOf +import com.google.firebase.analytics.FirebaseAnalytics import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.AppComponent import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.extensions.notNull +import com.habitrpg.android.habitica.helpers.MainNavigationController +import com.habitrpg.android.habitica.helpers.RemoteConfigManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.invitations.PartyInvite import com.habitrpg.android.habitica.models.members.Member @@ -42,6 +48,8 @@ class GroupInformationFragment : BaseFragment() { lateinit var socialRepository: SocialRepository @Inject lateinit var userRepository: UserRepository + @Inject + lateinit var configManager: RemoteConfigManager var group: Group? = null set(value) { @@ -127,6 +135,14 @@ class GroupInformationFragment : BaseFragment() { groupDescriptionView.movementMethod = LinkMovementMethod.getInstance() groupSummaryView.movementMethod = LinkMovementMethod.getInstance() + + if (configManager.noPartyLinkPartyGuild()) { + join_party_description_textview.text = MarkdownParser.parseMarkdown(getString(R.string.join_party_description_guild, "[Party Wanted Guild](https://habitica.com/groups/guild/f2db2a7f-13c5-454d-b3ee-ea1f5089e601)")) + join_party_description_textview.setOnClickListener { + context?.let { FirebaseAnalytics.getInstance(it).logEvent("clicked_party_wanted", null) } + MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupID" to "f2db2a7f-13c5-454d-b3ee-ea1f5089e601")) + } + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt index 1455b4fec..5962385c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt @@ -130,7 +130,7 @@ class InboxMessageListFragment : BaseMainFragment(), androidx.swiperefreshlayout } } - private fun setReceivingUser(chatRoomUser: String, replyToUserUUID: String) { + private fun setReceivingUser(chatRoomUser: String?, replyToUserUUID: String) { this.chatRoomUser = chatRoomUser this.replyToUserUUID = replyToUserUUID }