From ac7d46cfb70ab20fe3fceaacbc60815b8fb88f0d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 26 Dec 2023 13:46:30 +0100 Subject: [PATCH 1/3] Handle `MembershipChange.NONE` rendering in the timeline #2102 And avoid `else` in the when statement. --- changelog.d/2102.misc | 1 + .../impl/RoomMembershipContentFormatter.kt | 15 ++++++++++++++- .../impl/src/main/res/values/localazy.xml | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 changelog.d/2102.misc diff --git a/changelog.d/2102.misc b/changelog.d/2102.misc new file mode 100644 index 0000000000..87c258ef70 --- /dev/null +++ b/changelog.d/2102.misc @@ -0,0 +1 @@ +Handle `MembershipChange.NONE` rendering in the timeline. diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt index 6a65a9bd1e..926648458f 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt @@ -104,7 +104,20 @@ class RoomMembershipContentFormatter @Inject constructor( } else { sp.getString(R.string.state_event_room_knock_denied, senderDisplayName, userId.value) } - else -> { + MembershipChange.NONE -> if (senderIsYou) { + sp.getString(R.string.state_event_room_none_by_you) + } else { + sp.getString(R.string.state_event_room_none, senderDisplayName) + } + MembershipChange.ERROR -> { + Timber.v("Filtering timeline item for room membership: $membershipContent") + null + } + MembershipChange.NOT_IMPLEMENTED -> { + Timber.v("Filtering timeline item for room membership: $membershipContent") + null + } + null -> { Timber.v("Filtering timeline item for room membership: $membershipContent") null } diff --git a/libraries/eventformatter/impl/src/main/res/values/localazy.xml b/libraries/eventformatter/impl/src/main/res/values/localazy.xml index 03a13bd29b..525a9435fe 100644 --- a/libraries/eventformatter/impl/src/main/res/values/localazy.xml +++ b/libraries/eventformatter/impl/src/main/res/values/localazy.xml @@ -39,6 +39,8 @@ "You changed the room name to: %1$s" "%1$s removed the room name" "You removed the room name" + "%1$s made no changes" + "You made no changes" "%1$s rejected the invitation" "You rejected the invitation" "%1$s removed %2$s" From 3e1388cac78b0e9f66129398b0b2f2130d56f57e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 26 Dec 2023 16:10:07 +0100 Subject: [PATCH 2/3] Add test for `MembershipChange.NONE` --- .../DefaultRoomLastMessageFormatterTest.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt index a6d0f2e776..fa83c65139 100644 --- a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt +++ b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt @@ -469,10 +469,26 @@ class DefaultRoomLastMessageFormatterTest { assertThat(someoneDeniedYourKnock).isEqualTo("$otherName rejected your request to join") } + @Test + @Config(qualifiers = "en") + fun `Membership change - None`() { + val otherName = "Someone" + val youContent = RoomMembershipContent(A_USER_ID, MembershipChange.NONE) + val someoneContent = RoomMembershipContent(UserId("@someone_else:domain"), MembershipChange.NONE) + + val youNoneRoomEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = youContent) + val youNoneRoom = formatter.format(youNoneRoomEvent, false) + assertThat(youNoneRoom).isEqualTo("You made no changes") + + val someoneNoneRoomEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = someoneContent) + val someoneNoneRoom = formatter.format(someoneNoneRoomEvent, false) + assertThat(someoneNoneRoom).isEqualTo("$otherName made no changes") + } + @Test @Config(qualifiers = "en") fun `Membership change - others`() { - val otherChanges = arrayOf(MembershipChange.NONE, MembershipChange.ERROR, MembershipChange.NOT_IMPLEMENTED) + val otherChanges = arrayOf(MembershipChange.ERROR, MembershipChange.NOT_IMPLEMENTED) val results = otherChanges.map { change -> val content = RoomMembershipContent(A_USER_ID, change) From 926b147ebe9822f269224c8cb3ca9cb5b4087b17 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 28 Dec 2023 09:31:13 +0100 Subject: [PATCH 3/3] Add missing test case. --- .../eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt index fa83c65139..58c48808a6 100644 --- a/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt +++ b/libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt @@ -488,7 +488,7 @@ class DefaultRoomLastMessageFormatterTest { @Test @Config(qualifiers = "en") fun `Membership change - others`() { - val otherChanges = arrayOf(MembershipChange.ERROR, MembershipChange.NOT_IMPLEMENTED) + val otherChanges = arrayOf(MembershipChange.ERROR, MembershipChange.NOT_IMPLEMENTED, null) val results = otherChanges.map { change -> val content = RoomMembershipContent(A_USER_ID, change)