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
}