From 8f583d78acc38bce088592a9fc2cde5bdfc84da0 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 16 Apr 2024 13:20:43 +0200 Subject: [PATCH] Invites : open room instead of invite list when clicking an invite notification --- .../io/element/android/x/intent/IntentProviderImpl.kt | 6 ------ .../kotlin/io/element/android/appnav/LoggedInFlowNode.kt | 6 ------ .../kotlin/io/element/android/appnav/RootFlowNode.kt | 1 - .../io/element/android/libraries/deeplink/Constants.kt | 4 ---- .../android/libraries/deeplink/DeepLinkCreator.kt | 9 --------- .../element/android/libraries/deeplink/DeeplinkData.kt | 2 -- .../element/android/libraries/deeplink/DeeplinkParser.kt | 1 - .../android/libraries/deeplink/DeepLinkCreatorTest.kt | 6 ------ .../android/libraries/deeplink/DeeplinkParserTest.kt | 4 ---- .../android/libraries/push/impl/intent/IntentProvider.kt | 4 ---- .../impl/notifications/factories/NotificationCreator.kt | 2 +- .../impl/notifications/factories/PendingIntentFactory.kt | 5 ----- 12 files changed, 1 insertion(+), 49 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt b/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt index 88a86b9467..0e8e9b5f29 100644 --- a/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt +++ b/app/src/main/kotlin/io/element/android/x/intent/IntentProviderImpl.kt @@ -46,10 +46,4 @@ class IntentProviderImpl @Inject constructor( } } - override fun getInviteListIntent(sessionId: SessionId): Intent { - return Intent(context, MainActivity::class.java).apply { - action = Intent.ACTION_VIEW - data = deepLinkCreator.inviteList(sessionId).toUri() - } - } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 092a4d8888..46f84a73eb 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -362,12 +362,6 @@ class LoggedInFlowNode @AssistedInject constructor( } } - internal suspend fun attachInviteList(deeplinkData: DeeplinkData.InviteList) = withContext(lifecycleScope.coroutineContext) { - if (!canShowRoomList()) return@withContext - notificationDrawerManager.clearMembershipNotificationForSession(deeplinkData.sessionId) - backstack.singleTop(NavTarget.RoomList) - } - private fun canShowRoomList(): Boolean { return ftueService.state.value is FtueState.Complete } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt index d310a02b99..a3cbfb7d77 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/RootFlowNode.kt @@ -290,7 +290,6 @@ class RootFlowNode @AssistedInject constructor( when (deeplinkData) { is DeeplinkData.Root -> attachRoomList() is DeeplinkData.Room -> attachRoom(deeplinkData.roomId) - is DeeplinkData.InviteList -> attachInviteList(deeplinkData) } } } diff --git a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/Constants.kt b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/Constants.kt index d16d31fb82..df26ef2fa0 100644 --- a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/Constants.kt +++ b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/Constants.kt @@ -18,7 +18,3 @@ package io.element.android.libraries.deeplink internal const val SCHEME = "elementx" internal const val HOST = "open" - -object DeepLinkPaths { - const val INVITE_LIST = "invites" -} diff --git a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeepLinkCreator.kt b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeepLinkCreator.kt index 0cf2a7fca8..5f7dd339e4 100644 --- a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeepLinkCreator.kt +++ b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeepLinkCreator.kt @@ -36,13 +36,4 @@ class DeepLinkCreator @Inject constructor() { } } } - - fun inviteList(sessionId: SessionId): String { - return buildString { - append("$SCHEME://$HOST/") - append(sessionId.value) - append("/") - append(DeepLinkPaths.INVITE_LIST) - } - } } diff --git a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkData.kt b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkData.kt index aa373411c7..85fa57d413 100644 --- a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkData.kt +++ b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkData.kt @@ -30,6 +30,4 @@ sealed interface DeeplinkData { /** The target is a room, with the given [sessionId], [roomId] and optionally a [threadId]. */ data class Room(override val sessionId: SessionId, val roomId: RoomId, val threadId: ThreadId?) : DeeplinkData - /** The target is the invites list, with the given [sessionId]. */ - data class InviteList(override val sessionId: SessionId) : DeeplinkData } diff --git a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkParser.kt b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkParser.kt index 7a5f9d5772..93548b8248 100644 --- a/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkParser.kt +++ b/libraries/deeplink/src/main/kotlin/io/element/android/libraries/deeplink/DeeplinkParser.kt @@ -39,7 +39,6 @@ class DeeplinkParser @Inject constructor() { return when (val screenPathComponent = pathBits.elementAtOrNull(1)) { null -> DeeplinkData.Root(sessionId) - DeepLinkPaths.INVITE_LIST -> DeeplinkData.InviteList(sessionId) else -> { val roomId = screenPathComponent.let(::RoomId) val threadId = pathBits.elementAtOrNull(2)?.let(::ThreadId) diff --git a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt index 5c43624655..664b61cbdc 100644 --- a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt +++ b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeepLinkCreatorTest.kt @@ -34,10 +34,4 @@ class DeepLinkCreatorTest { .isEqualTo("elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId") } - @Test - fun inviteList() { - val sut = DeepLinkCreator() - assertThat(sut.inviteList(A_SESSION_ID)) - .isEqualTo("elementx://open/@alice:server.org/invites") - } } diff --git a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeeplinkParserTest.kt b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeeplinkParserTest.kt index 553850a4d6..b11b2f620c 100644 --- a/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeeplinkParserTest.kt +++ b/libraries/deeplink/src/test/kotlin/io/element/android/libraries/deeplink/DeeplinkParserTest.kt @@ -36,8 +36,6 @@ class DeeplinkParserTest { "elementx://open/@alice:server.org/!aRoomId:domain" const val A_URI_WITH_ROOM_WITH_THREAD = "elementx://open/@alice:server.org/!aRoomId:domain/\$aThreadId" - const val A_URI_FOR_INVITE_LIST = - "elementx://open/@alice:server.org/invites" } private val sut = DeeplinkParser() @@ -50,8 +48,6 @@ class DeeplinkParserTest { .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, null)) assertThat(sut.getFromIntent(createIntent(A_URI_WITH_ROOM_WITH_THREAD))) .isEqualTo(DeeplinkData.Room(A_SESSION_ID, A_ROOM_ID, A_THREAD_ID)) - assertThat(sut.getFromIntent(createIntent(A_URI_FOR_INVITE_LIST))) - .isEqualTo(DeeplinkData.InviteList(A_SESSION_ID)) } @Test diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt index 8e0dd3e6f2..22d745d92a 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/intent/IntentProvider.kt @@ -31,8 +31,4 @@ interface IntentProvider { threadId: ThreadId?, ): Intent - /** - * Provide an intent to start the application on the invite list. - */ - fun getInviteListIntent(sessionId: SessionId): Intent } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt index 67c8973d13..434504dd69 100755 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/NotificationCreator.kt @@ -157,7 +157,7 @@ class NotificationCreator @Inject constructor( // .addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) .apply { // Build the pending intent for when the notification is clicked - setContentIntent(pendingIntentFactory.createInviteListPendingIntent(inviteNotifiableEvent.sessionId)) + setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(inviteNotifiableEvent.sessionId, inviteNotifiableEvent.roomId)) if (inviteNotifiableEvent.noisy) { // Compat diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt index 9752c621d5..f51eea74dd 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/PendingIntentFactory.kt @@ -128,9 +128,4 @@ class PendingIntentFactory @Inject constructor( PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) } - - fun createInviteListPendingIntent(sessionId: SessionId): PendingIntent { - val intent = intentProvider.getInviteListIntent(sessionId) - return PendingIntentCompat.getActivity(context, 0, intent, 0, false)!! - } }