Browse Source

Use `userId` on display name change state events (#2545)

* Use `userId` on display name change state events
fix/jme/screenshot-tests-issues
Jorge Martin Espinosa 6 months ago committed by GitHub
parent
commit
69a08b5565
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      changelog.d/2125.bugfix
  2. 2
      libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt
  3. 2
      libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt
  4. 10
      libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/ProfileChangeContentFormatter.kt
  5. 10
      libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt

1
changelog.d/2125.bugfix

@ -0,0 +1 @@
Use the display name only once in display name change events. The user should be referenced by `userId` instead.

2
libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt

@ -97,7 +97,7 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing) roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing)
} }
is ProfileChangeContent -> { is ProfileChangeContent -> {
profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing) profileChangeContentFormatter.format(content, event.sender, senderDisplayName, isOutgoing)
} }
is StateContent -> { is StateContent -> {
stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.RoomList) stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.RoomList)

2
libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt

@ -54,7 +54,7 @@ class DefaultTimelineEventFormatter @Inject constructor(
roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing) roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing)
} }
is ProfileChangeContent -> { is ProfileChangeContent -> {
profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing) profileChangeContentFormatter.format(content, event.sender, senderDisplayName, isOutgoing)
} }
is StateContent -> { is StateContent -> {
stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.Timeline) stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.Timeline)

10
libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/ProfileChangeContentFormatter.kt

@ -16,6 +16,7 @@
package io.element.android.libraries.eventformatter.impl package io.element.android.libraries.eventformatter.impl
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent import io.element.android.libraries.matrix.api.timeline.item.event.ProfileChangeContent
import io.element.android.services.toolbox.api.strings.StringProvider import io.element.android.services.toolbox.api.strings.StringProvider
import javax.inject.Inject import javax.inject.Inject
@ -25,6 +26,7 @@ class ProfileChangeContentFormatter @Inject constructor(
) { ) {
fun format( fun format(
profileChangeContent: ProfileChangeContent, profileChangeContent: ProfileChangeContent,
senderId: UserId,
senderDisplayName: String, senderDisplayName: String,
senderIsYou: Boolean, senderIsYou: Boolean,
): String? = profileChangeContent.run { ): String? = profileChangeContent.run {
@ -32,7 +34,7 @@ class ProfileChangeContentFormatter @Inject constructor(
val avatarChanged = avatarUrl != prevAvatarUrl val avatarChanged = avatarUrl != prevAvatarUrl
return when { return when {
avatarChanged && displayNameChanged -> { avatarChanged && displayNameChanged -> {
val message = format(profileChangeContent.copy(avatarUrl = null, prevAvatarUrl = null), senderDisplayName, senderIsYou) val message = format(profileChangeContent.copy(avatarUrl = null, prevAvatarUrl = null), senderId, senderDisplayName, senderIsYou)
val avatarChangedToo = sp.getString(R.string.state_event_avatar_changed_too) val avatarChangedToo = sp.getString(R.string.state_event_avatar_changed_too)
"$message\n$avatarChangedToo" "$message\n$avatarChangedToo"
} }
@ -41,19 +43,19 @@ class ProfileChangeContentFormatter @Inject constructor(
if (senderIsYou) { if (senderIsYou) {
sp.getString(R.string.state_event_display_name_changed_from_by_you, prevDisplayName, displayName) sp.getString(R.string.state_event_display_name_changed_from_by_you, prevDisplayName, displayName)
} else { } else {
sp.getString(R.string.state_event_display_name_changed_from, senderDisplayName, prevDisplayName, displayName) sp.getString(R.string.state_event_display_name_changed_from, senderId.value, prevDisplayName, displayName)
} }
} else if (displayName != null) { } else if (displayName != null) {
if (senderIsYou) { if (senderIsYou) {
sp.getString(R.string.state_event_display_name_set_by_you, displayName) sp.getString(R.string.state_event_display_name_set_by_you, displayName)
} else { } else {
sp.getString(R.string.state_event_display_name_set, senderDisplayName, displayName) sp.getString(R.string.state_event_display_name_set, senderId.value, displayName)
} }
} else { } else {
if (senderIsYou) { if (senderIsYou) {
sp.getString(R.string.state_event_display_name_removed_by_you, prevDisplayName) sp.getString(R.string.state_event_display_name_removed_by_you, prevDisplayName)
} else { } else {
sp.getString(R.string.state_event_display_name_removed, senderDisplayName, prevDisplayName) sp.getString(R.string.state_event_display_name_removed, senderId.value, prevDisplayName)
} }
} }
} }

10
libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt

@ -733,7 +733,7 @@ class DefaultRoomLastMessageFormatterTest {
val someoneChangedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent) val someoneChangedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
val someoneChangedDisplayName = formatter.format(someoneChangedDisplayNameEvent, false) val someoneChangedDisplayName = formatter.format(someoneChangedDisplayNameEvent, false)
assertThat(someoneChangedDisplayName).isEqualTo("$otherName changed their display name from $oldDisplayName to $newDisplayName") assertThat(someoneChangedDisplayName).isEqualTo("$someoneElseId changed their display name from $oldDisplayName to $newDisplayName")
val youSetDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent) val youSetDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = setContent)
val youSetDisplayName = formatter.format(youSetDisplayNameEvent, false) val youSetDisplayName = formatter.format(youSetDisplayNameEvent, false)
@ -741,7 +741,7 @@ class DefaultRoomLastMessageFormatterTest {
val someoneSetDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent) val someoneSetDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent)
val someoneSetDisplayName = formatter.format(someoneSetDisplayNameEvent, false) val someoneSetDisplayName = formatter.format(someoneSetDisplayNameEvent, false)
assertThat(someoneSetDisplayName).isEqualTo("$otherName set their display name to $newDisplayName") assertThat(someoneSetDisplayName).isEqualTo("$someoneElseId set their display name to $newDisplayName")
val youRemovedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent) val youRemovedDisplayNameEvent = createRoomEvent(sentByYou = true, senderDisplayName = null, content = removedContent)
val youRemovedDisplayName = formatter.format(youRemovedDisplayNameEvent, false) val youRemovedDisplayName = formatter.format(youRemovedDisplayNameEvent, false)
@ -749,7 +749,7 @@ class DefaultRoomLastMessageFormatterTest {
val someoneRemovedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent) val someoneRemovedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
val someoneRemovedDisplayName = formatter.format(someoneRemovedDisplayNameEvent, false) val someoneRemovedDisplayName = formatter.format(someoneRemovedDisplayNameEvent, false)
assertThat(someoneRemovedDisplayName).isEqualTo("$otherName removed their display name (it was $oldDisplayName)") assertThat(someoneRemovedDisplayName).isEqualTo("$someoneElseId removed their display name (it was $oldDisplayName)")
val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent) val unchangedEvent = createRoomEvent(sentByYou = true, senderDisplayName = otherName, content = sameContent)
val unchangedResult = formatter.format(unchangedEvent, false) val unchangedResult = formatter.format(unchangedEvent, false)
@ -828,7 +828,7 @@ class DefaultRoomLastMessageFormatterTest {
// endregion // endregion
private fun createRoomEvent(sentByYou: Boolean, senderDisplayName: String?, content: EventContent): EventTimelineItem { private fun createRoomEvent(sentByYou: Boolean, senderDisplayName: String?, content: EventContent): EventTimelineItem {
val sender = if (sentByYou) A_USER_ID else UserId("@someone_else:domain") val sender = if (sentByYou) A_USER_ID else someoneElseId
val profile = ProfileTimelineDetails.Ready(senderDisplayName, false, null) val profile = ProfileTimelineDetails.Ready(senderDisplayName, false, null)
return anEventTimelineItem( return anEventTimelineItem(
content = content, content = content,
@ -837,4 +837,6 @@ class DefaultRoomLastMessageFormatterTest {
isOwn = sentByYou, isOwn = sentByYou,
) )
} }
private val someoneElseId = UserId("@someone_else:domain")
} }

Loading…
Cancel
Save