From 4525f97be633cae7c94fdb74ef9c17ac09fdb595 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 21 Nov 2024 14:53:40 +0100 Subject: [PATCH 1/7] Enable all notification actions. --- .../android/appconfig/NotificationConfig.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt index c5f605e5fe..e44deeb2f4 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt @@ -11,14 +11,20 @@ import android.graphics.Color import androidx.annotation.ColorInt object NotificationConfig { - // TODO EAx Implement and set to true at some point - const val SUPPORT_MARK_AS_READ_ACTION = false + /** + * If set to true, the notification will have a "Mark as read" action. + */ + const val SUPPORT_MARK_AS_READ_ACTION = true - // TODO EAx Implement and set to true at some point - const val SUPPORT_JOIN_DECLINE_INVITE = false + /** + * If set to true, the notification for invitation will have two actions to accept or decline the invite. + */ + const val SUPPORT_JOIN_DECLINE_INVITE = true - // TODO EAx Implement and set to true at some point - const val SUPPORT_QUICK_REPLY_ACTION = false + /** + * If set to true, the notification will have a "Quick reply" action, allow to compose and send a message to the room. + */ + const val SUPPORT_QUICK_REPLY_ACTION = true @ColorInt val NOTIFICATION_ACCENT_COLOR: Int = Color.parseColor("#FF0DBD8B") From e6474bffb70bfe45efbf437cdcbfe9fce1f4568c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 21 Nov 2024 21:51:19 +0100 Subject: [PATCH 2/7] Fix test --- .../DefaultRoomGroupMessageCreatorTest.kt | 17 ++++++++++++++++- .../factories/DefaultNotificationCreatorTest.kt | 13 +++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt index d0255aa452..8d17fd3901 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt @@ -11,6 +11,7 @@ import android.content.Context import android.os.Build import androidx.core.app.NotificationCompat import com.google.common.truth.Truth.assertThat +import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.matrix.api.media.MediaSource import io.element.android.libraries.matrix.test.A_ROOM_ID import io.element.android.libraries.matrix.test.A_TIMESTAMP @@ -18,6 +19,8 @@ import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.matrix.ui.media.AVATAR_THUMBNAIL_SIZE_IN_PIXEL import io.element.android.libraries.matrix.ui.media.MediaRequestData import io.element.android.libraries.push.impl.notifications.factories.createNotificationCreator +import io.element.android.libraries.push.impl.notifications.factories.markAsReadActionTitle +import io.element.android.libraries.push.impl.notifications.factories.quickReplyActionTitle import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider @@ -156,6 +159,13 @@ class DefaultRoomGroupMessageCreatorTest { ) assertThat(result.number).isEqualTo(2) assertThat(result.`when`).isEqualTo(A_TIMESTAMP + 10) + val actionTitles = result.actions?.map { it.title } + assertThat(actionTitles).isEqualTo( + listOfNotNull( + markAsReadActionTitle.takeIf { NotificationConfig.SUPPORT_MARK_AS_READ_ACTION }, + quickReplyActionTitle.takeIf { NotificationConfig.SUPPORT_QUICK_REPLY_ACTION }, + ) + ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) } @@ -175,7 +185,12 @@ class DefaultRoomGroupMessageCreatorTest { imageLoader = fakeImageLoader.getImageLoader(), existingNotification = null, ) - assertThat(result.actions).isNull() + val actionTitles = result.actions?.map { it.title } + assertThat(actionTitles).isEqualTo( + listOfNotNull( + markAsReadActionTitle.takeIf { NotificationConfig.SUPPORT_MARK_AS_READ_ACTION } + ) + ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) } diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index 9e2f3c1038..ae8d7f7d0b 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -271,6 +271,11 @@ class DefaultNotificationCreatorTest { } } +const val markAsReadActionTitle = "MarkAsReadAction" +const val quickReplyActionTitle = "QuickReplyAction" +const val acceptInvitationActionTitle = "AcceptInvitationAction" +const val rejectInvitationActionTitle = "RejectInvitationAction" + fun createNotificationCreator( context: Context = RuntimeEnvironment.getApplication(), buildMeta: BuildMeta = aBuildMeta(), @@ -291,26 +296,26 @@ fun createNotificationCreator( markAsReadActionFactory = MarkAsReadActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider("MarkAsReadActionFactory"), + stringProvider = FakeStringProvider(markAsReadActionTitle), clock = FakeSystemClock(), ), quickReplyActionFactory = QuickReplyActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider("QuickReplyActionFactory"), + stringProvider = FakeStringProvider(quickReplyActionTitle), clock = FakeSystemClock(), ), bitmapLoader = bitmapLoader, acceptInvitationActionFactory = AcceptInvitationActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider("AcceptInvitationActionFactory"), + stringProvider = FakeStringProvider(acceptInvitationActionTitle), clock = FakeSystemClock(), ), rejectInvitationActionFactory = RejectInvitationActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider("RejectInvitationActionFactory"), + stringProvider = FakeStringProvider(rejectInvitationActionTitle), clock = FakeSystemClock(), ), ) From 90fd10329fca334112988d4d02b386cb172a1b6d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 22 Nov 2024 14:00:34 +0100 Subject: [PATCH 3/7] Change wording of quick action for invitations. --- .../factories/action/AcceptInvitationActionFactory.kt | 4 ++-- .../factories/action/RejectInvitationActionFactory.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt index ee3d392c1f..9cc903939f 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent +import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.systemclock.SystemClock import javax.inject.Inject @@ -27,7 +28,6 @@ class AcceptInvitationActionFactory @Inject constructor( private val stringProvider: StringProvider, private val clock: SystemClock, ) { - // offer to type a quick accept button fun create(inviteNotifiableEvent: InviteNotifiableEvent): NotificationCompat.Action { val sessionId = inviteNotifiableEvent.sessionId.value val roomId = inviteNotifiableEvent.roomId.value @@ -44,7 +44,7 @@ class AcceptInvitationActionFactory @Inject constructor( ) return NotificationCompat.Action.Builder( R.drawable.vector_notification_accept_invitation, - stringProvider.getString(R.string.notification_invitation_action_join), + stringProvider.getString(CommonStrings.action_accept), pendingIntent ).build() } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt index 309acce44c..271ea0dcc3 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt @@ -17,6 +17,7 @@ import io.element.android.libraries.push.impl.R import io.element.android.libraries.push.impl.notifications.NotificationActionIds import io.element.android.libraries.push.impl.notifications.NotificationBroadcastReceiver import io.element.android.libraries.push.impl.notifications.model.InviteNotifiableEvent +import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.systemclock.SystemClock import javax.inject.Inject @@ -41,10 +42,9 @@ class RejectInvitationActionFactory @Inject constructor( intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) - return NotificationCompat.Action.Builder( R.drawable.vector_notification_reject_invitation, - stringProvider.getString(R.string.notification_invitation_action_reject), + stringProvider.getString(CommonStrings.action_reject), pendingIntent ).build() } From 1049a1584a81b953ad17eeca23dc2159c37e36c0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 22 Nov 2024 14:04:21 +0100 Subject: [PATCH 4/7] Rename const for clarity and convention --- .../io/element/android/appconfig/NotificationConfig.kt | 6 +++--- .../impl/notifications/factories/NotificationCreator.kt | 2 +- .../factories/action/MarkAsReadActionFactory.kt | 2 +- .../factories/action/QuickReplyActionFactory.kt | 2 +- .../notifications/DefaultRoomGroupMessageCreatorTest.kt | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt index e44deeb2f4..83ea9e3b77 100644 --- a/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/NotificationConfig.kt @@ -14,17 +14,17 @@ object NotificationConfig { /** * If set to true, the notification will have a "Mark as read" action. */ - const val SUPPORT_MARK_AS_READ_ACTION = true + const val SHOW_MARK_AS_READ_ACTION = true /** * If set to true, the notification for invitation will have two actions to accept or decline the invite. */ - const val SUPPORT_JOIN_DECLINE_INVITE = true + const val SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS = true /** * If set to true, the notification will have a "Quick reply" action, allow to compose and send a message to the room. */ - const val SUPPORT_QUICK_REPLY_ACTION = true + const val SHOW_QUICK_REPLY_ACTION = true @ColorInt val NOTIFICATION_ACCENT_COLOR: Int = Color.parseColor("#FF0DBD8B") 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 559322eaae..b421585ddd 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 @@ -230,7 +230,7 @@ class DefaultNotificationCreator @Inject constructor( .setSmallIcon(smallIcon) .setColor(accentColor) .apply { - if (NotificationConfig.SUPPORT_JOIN_DECLINE_INVITE) { + if (NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS) { addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt index b77e36cfc0..e6a2594bb8 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/MarkAsReadActionFactory.kt @@ -29,7 +29,7 @@ class MarkAsReadActionFactory @Inject constructor( private val clock: SystemClock, ) { fun create(roomInfo: RoomEventGroupInfo): NotificationCompat.Action? { - if (!NotificationConfig.SUPPORT_MARK_AS_READ_ACTION) return null + if (!NotificationConfig.SHOW_MARK_AS_READ_ACTION) return null val sessionId = roomInfo.sessionId.value val roomId = roomInfo.roomId.value val intent = Intent(context, NotificationBroadcastReceiver::class.java) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt index 3ada849026..bced0abd90 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/QuickReplyActionFactory.kt @@ -34,7 +34,7 @@ class QuickReplyActionFactory @Inject constructor( private val clock: SystemClock, ) { fun create(roomInfo: RoomEventGroupInfo, threadId: ThreadId?): NotificationCompat.Action? { - if (!NotificationConfig.SUPPORT_QUICK_REPLY_ACTION) return null + if (!NotificationConfig.SHOW_QUICK_REPLY_ACTION) return null val sessionId = roomInfo.sessionId val roomId = roomInfo.roomId val replyPendingIntent = buildQuickReplyIntent(sessionId, roomId, threadId) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt index 8d17fd3901..4f2e254dcd 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt @@ -162,8 +162,8 @@ class DefaultRoomGroupMessageCreatorTest { val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( listOfNotNull( - markAsReadActionTitle.takeIf { NotificationConfig.SUPPORT_MARK_AS_READ_ACTION }, - quickReplyActionTitle.takeIf { NotificationConfig.SUPPORT_QUICK_REPLY_ACTION }, + markAsReadActionTitle.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION }, + quickReplyActionTitle.takeIf { NotificationConfig.SHOW_QUICK_REPLY_ACTION }, ) ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) @@ -188,7 +188,7 @@ class DefaultRoomGroupMessageCreatorTest { val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( listOfNotNull( - markAsReadActionTitle.takeIf { NotificationConfig.SUPPORT_MARK_AS_READ_ACTION } + markAsReadActionTitle.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION } ) ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) From c6e6960fc034fff7c29e759ae62478ae2881e7a4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 22 Nov 2024 14:05:48 +0100 Subject: [PATCH 5/7] Code iteration for parity with other Factories. --- .../impl/notifications/factories/NotificationCreator.kt | 6 ++---- .../factories/action/AcceptInvitationActionFactory.kt | 4 +++- .../factories/action/RejectInvitationActionFactory.kt | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) 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 b421585ddd..6788410468 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 @@ -230,10 +230,8 @@ class DefaultNotificationCreator @Inject constructor( .setSmallIcon(smallIcon) .setColor(accentColor) .apply { - if (NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS) { - addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) - addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) - } + addAction(rejectInvitationActionFactory.create(inviteNotifiableEvent)) + addAction(acceptInvitationActionFactory.create(inviteNotifiableEvent)) // Build the pending intent for when the notification is clicked setContentIntent(pendingIntentFactory.createOpenRoomPendingIntent(inviteNotifiableEvent.sessionId, inviteNotifiableEvent.roomId)) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt index 9cc903939f..9b2cf64a7d 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/AcceptInvitationActionFactory.kt @@ -11,6 +11,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import androidx.core.app.NotificationCompat +import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.push.impl.R @@ -28,7 +29,8 @@ class AcceptInvitationActionFactory @Inject constructor( private val stringProvider: StringProvider, private val clock: SystemClock, ) { - fun create(inviteNotifiableEvent: InviteNotifiableEvent): NotificationCompat.Action { + fun create(inviteNotifiableEvent: InviteNotifiableEvent): NotificationCompat.Action? { + if (!NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS) return null val sessionId = inviteNotifiableEvent.sessionId.value val roomId = inviteNotifiableEvent.roomId.value val intent = Intent(context, NotificationBroadcastReceiver::class.java) diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt index 271ea0dcc3..d4eb28f141 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/factories/action/RejectInvitationActionFactory.kt @@ -11,6 +11,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import androidx.core.app.NotificationCompat +import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.androidutils.uri.createIgnoredUri import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.push.impl.R @@ -29,6 +30,7 @@ class RejectInvitationActionFactory @Inject constructor( private val clock: SystemClock, ) { fun create(inviteNotifiableEvent: InviteNotifiableEvent): NotificationCompat.Action? { + if (!NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS) return null val sessionId = inviteNotifiableEvent.sessionId.value val roomId = inviteNotifiableEvent.roomId.value val intent = Intent(context, NotificationBroadcastReceiver::class.java) From 41f0278735614a2ac7ef0e3207cef820b3e9a0d1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 22 Nov 2024 14:51:07 +0100 Subject: [PATCH 6/7] Check that action to accept or reject an invitation is added to the notification. --- .../factories/DefaultNotificationCreatorTest.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index ae8d7f7d0b..ba9bc5e164 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -13,6 +13,7 @@ import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import com.google.common.truth.Truth.assertThat +import io.element.android.appconfig.NotificationConfig import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.A_ROOM_ID @@ -151,6 +152,13 @@ class DefaultNotificationCreatorTest { result.commonAssertions( expectedCategory = null, ) + val actionTitles = result.actions?.map { it.title } + assertThat(actionTitles).isEqualTo( + listOfNotNull( + rejectInvitationActionTitle.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, + acceptInvitationActionTitle.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, + ) + ) } @Test From c1868ebd14c16ae60503bdcdcb822ebb23019971 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 22 Nov 2024 15:45:41 +0100 Subject: [PATCH 7/7] naming convention --- .../DefaultRoomGroupMessageCreatorTest.kt | 10 +++++----- .../DefaultNotificationCreatorTest.kt | 20 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt index 4f2e254dcd..44846f8010 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/DefaultRoomGroupMessageCreatorTest.kt @@ -18,9 +18,9 @@ import io.element.android.libraries.matrix.test.A_TIMESTAMP import io.element.android.libraries.matrix.ui.components.aMatrixUser import io.element.android.libraries.matrix.ui.media.AVATAR_THUMBNAIL_SIZE_IN_PIXEL import io.element.android.libraries.matrix.ui.media.MediaRequestData +import io.element.android.libraries.push.impl.notifications.factories.MARK_AS_READ_ACTION_TITLE +import io.element.android.libraries.push.impl.notifications.factories.QUICK_REPLY_ACTION_TITLE import io.element.android.libraries.push.impl.notifications.factories.createNotificationCreator -import io.element.android.libraries.push.impl.notifications.factories.markAsReadActionTitle -import io.element.android.libraries.push.impl.notifications.factories.quickReplyActionTitle import io.element.android.libraries.push.impl.notifications.fixtures.aNotifiableMessageEvent import io.element.android.libraries.push.test.notifications.FakeImageLoader import io.element.android.services.toolbox.api.sdk.BuildVersionSdkIntProvider @@ -162,8 +162,8 @@ class DefaultRoomGroupMessageCreatorTest { val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( listOfNotNull( - markAsReadActionTitle.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION }, - quickReplyActionTitle.takeIf { NotificationConfig.SHOW_QUICK_REPLY_ACTION }, + MARK_AS_READ_ACTION_TITLE.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION }, + QUICK_REPLY_ACTION_TITLE.takeIf { NotificationConfig.SHOW_QUICK_REPLY_ACTION }, ) ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) @@ -188,7 +188,7 @@ class DefaultRoomGroupMessageCreatorTest { val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( listOfNotNull( - markAsReadActionTitle.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION } + MARK_AS_READ_ACTION_TITLE.takeIf { NotificationConfig.SHOW_MARK_AS_READ_ACTION } ) ) assertThat(fakeImageLoader.getCoilRequests().size).isEqualTo(0) diff --git a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt index ba9bc5e164..9a25ad2a72 100644 --- a/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt +++ b/libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/factories/DefaultNotificationCreatorTest.kt @@ -155,8 +155,8 @@ class DefaultNotificationCreatorTest { val actionTitles = result.actions?.map { it.title } assertThat(actionTitles).isEqualTo( listOfNotNull( - rejectInvitationActionTitle.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, - acceptInvitationActionTitle.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, + REJECT_INVITATION_ACTION_TITLE.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, + ACCEPT_INVITATION_ACTION_TITLE.takeIf { NotificationConfig.SHOW_ACCEPT_AND_DECLINE_INVITE_ACTIONS }, ) ) } @@ -279,10 +279,10 @@ class DefaultNotificationCreatorTest { } } -const val markAsReadActionTitle = "MarkAsReadAction" -const val quickReplyActionTitle = "QuickReplyAction" -const val acceptInvitationActionTitle = "AcceptInvitationAction" -const val rejectInvitationActionTitle = "RejectInvitationAction" +const val MARK_AS_READ_ACTION_TITLE = "MarkAsReadAction" +const val QUICK_REPLY_ACTION_TITLE = "QuickReplyAction" +const val ACCEPT_INVITATION_ACTION_TITLE = "AcceptInvitationAction" +const val REJECT_INVITATION_ACTION_TITLE = "RejectInvitationAction" fun createNotificationCreator( context: Context = RuntimeEnvironment.getApplication(), @@ -304,26 +304,26 @@ fun createNotificationCreator( markAsReadActionFactory = MarkAsReadActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider(markAsReadActionTitle), + stringProvider = FakeStringProvider(MARK_AS_READ_ACTION_TITLE), clock = FakeSystemClock(), ), quickReplyActionFactory = QuickReplyActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider(quickReplyActionTitle), + stringProvider = FakeStringProvider(QUICK_REPLY_ACTION_TITLE), clock = FakeSystemClock(), ), bitmapLoader = bitmapLoader, acceptInvitationActionFactory = AcceptInvitationActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider(acceptInvitationActionTitle), + stringProvider = FakeStringProvider(ACCEPT_INVITATION_ACTION_TITLE), clock = FakeSystemClock(), ), rejectInvitationActionFactory = RejectInvitationActionFactory( context = context, actionIds = NotificationActionIds(buildMeta), - stringProvider = FakeStringProvider(rejectInvitationActionTitle), + stringProvider = FakeStringProvider(REJECT_INVITATION_ACTION_TITLE), clock = FakeSystemClock(), ), )