Merge pull request #4044 from vector-im/feature/bca/fix_show_invitebottomsheet_on_notif_intent

Show mxto bottom sheet when tapping invite notification
This commit is contained in:
Benoit Marty 2021-09-20 18:24:11 +02:00 committed by GitHub
commit 6bf8202e65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 5 deletions

1
changelog.d/4043.bugfix Normal file
View file

@ -0,0 +1 @@
Spaces invitation system notifications don't take me to the join space toast

View file

@ -81,7 +81,8 @@ import javax.inject.Inject
@Parcelize
data class HomeActivityArgs(
val clearNotification: Boolean,
val accountCreation: Boolean
val accountCreation: Boolean,
val inviteNotificationRoomId: String? = null
) : Parcelable
class HomeActivity :
@ -229,6 +230,11 @@ class HomeActivity :
if (args?.clearNotification == true) {
notificationDrawerManager.clearAllEvents()
}
if (args?.inviteNotificationRoomId != null) {
activeSessionHolder.getSafeActiveSession()?.permalinkService()?.createPermalink(args.inviteNotificationRoomId)?.let {
navigator.openMatrixToBottomSheet(this, it)
}
}
homeActivityViewModel.observeViewEvents {
when (it) {
@ -422,9 +428,17 @@ class HomeActivity :
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
if (intent?.getParcelableExtra<HomeActivityArgs>(MvRx.KEY_ARG)?.clearNotification == true) {
val parcelableExtra = intent?.getParcelableExtra<HomeActivityArgs>(MvRx.KEY_ARG)
if (parcelableExtra?.clearNotification == true) {
notificationDrawerManager.clearAllEvents()
}
if (parcelableExtra?.inviteNotificationRoomId != null) {
activeSessionHolder.getSafeActiveSession()
?.permalinkService()
?.createPermalink(parcelableExtra.inviteNotificationRoomId)?.let {
navigator.openMatrixToBottomSheet(this, it)
}
}
handleIntent(intent)
}
@ -548,10 +562,15 @@ class HomeActivity :
}
companion object {
fun newIntent(context: Context, clearNotification: Boolean = false, accountCreation: Boolean = false): Intent {
fun newIntent(context: Context,
clearNotification: Boolean = false,
accountCreation: Boolean = false,
inviteNotificationRoomId: String? = null
): Intent {
val args = HomeActivityArgs(
clearNotification = clearNotification,
accountCreation = accountCreation
accountCreation = accountCreation,
inviteNotificationRoomId = inviteNotificationRoomId
)
return Intent(context, HomeActivity::class.java)

View file

@ -679,7 +679,7 @@ class NotificationUtils @Inject constructor(private val context: Context,
stringProvider.getString(R.string.join),
joinIntentPendingIntent)
val contentIntent = HomeActivity.newIntent(context)
val contentIntent = HomeActivity.newIntent(context, inviteNotificationRoomId = inviteNotifiableEvent.roomId)
contentIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
// pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that
contentIntent.data = Uri.parse("foobar://" + inviteNotifiableEvent.eventId)