add option to link users to party wanted guild from party screen. Fixes #1126

This commit is contained in:
Phillip Thelen 2019-04-17 15:41:41 +02:00
parent 6a472db5a6
commit fbeaef460c
8 changed files with 34 additions and 6 deletions

View file

@ -211,7 +211,8 @@
app:argType="string" />
<argument
android:name="username"
app:argType="string" />
app:argType="string"
app:nullable="true" />
</fragment>
<fragment
android:id="@+id/petDetailRecyclerFragment"

View file

@ -762,6 +762,7 @@
<string name="no_party_description">Take on quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties.</string>
<string name="no_party_title">Play Habitica in a Party</string>
<string name="join_party_description">Give a Party member the username found below and they can send you an invite</string>
<string name="join_party_description_guild">Give the username below to a friend or head to the %s to meet potential comrades!e</string>
<string name="join_party_description_id">Give them your User ID or have them scan your QR code while inviting</string>
<string name="join_party_title">Want to join a party?</string>
<string name="create_party_website">Open website to create party</string>

View file

@ -32,5 +32,9 @@
<key>lastVersionCode</key>
<value>0</value>
</entry>
<entry>
<key>noPartyLinkPartyGuild</key>
<value>false</value>
</entry>
</defaultsMap>
<!-- END xml_defaults -->

View file

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

View file

@ -52,4 +52,8 @@ class RemoteConfigManager {
fun lastVersionCode(): Long {
return remoteConfig.getLong("lastVersionCode")
}
fun noPartyLinkPartyGuild(): Boolean {
return remoteConfig.getBoolean("noPartyLinkPartyGuild")
}
}

View file

@ -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()
}

View file

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

View file

@ -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
}