Use userId on display name change state events (#2545)
* Use `userId` on display name change state events
This commit is contained in:
parent
ab504a6095
commit
69a08b5565
5 changed files with 15 additions and 10 deletions
1
changelog.d/2125.bugfix
Normal file
1
changelog.d/2125.bugfix
Normal file
|
|
@ -0,0 +1 @@
|
|||
Use the display name only once in display name change events. The user should be referenced by `userId` instead.
|
||||
|
|
@ -97,7 +97,7 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
|
|||
roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing)
|
||||
}
|
||||
is ProfileChangeContent -> {
|
||||
profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing)
|
||||
profileChangeContentFormatter.format(content, event.sender, senderDisplayName, isOutgoing)
|
||||
}
|
||||
is StateContent -> {
|
||||
stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.RoomList)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class DefaultTimelineEventFormatter @Inject constructor(
|
|||
roomMembershipContentFormatter.format(content, senderDisplayName, isOutgoing)
|
||||
}
|
||||
is ProfileChangeContent -> {
|
||||
profileChangeContentFormatter.format(content, senderDisplayName, isOutgoing)
|
||||
profileChangeContentFormatter.format(content, event.sender, senderDisplayName, isOutgoing)
|
||||
}
|
||||
is StateContent -> {
|
||||
stateContentFormatter.format(content, senderDisplayName, isOutgoing, RenderingMode.Timeline)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
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.services.toolbox.api.strings.StringProvider
|
||||
import javax.inject.Inject
|
||||
|
|
@ -25,6 +26,7 @@ class ProfileChangeContentFormatter @Inject constructor(
|
|||
) {
|
||||
fun format(
|
||||
profileChangeContent: ProfileChangeContent,
|
||||
senderId: UserId,
|
||||
senderDisplayName: String,
|
||||
senderIsYou: Boolean,
|
||||
): String? = profileChangeContent.run {
|
||||
|
|
@ -32,7 +34,7 @@ class ProfileChangeContentFormatter @Inject constructor(
|
|||
val avatarChanged = avatarUrl != prevAvatarUrl
|
||||
return when {
|
||||
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)
|
||||
"$message\n$avatarChangedToo"
|
||||
}
|
||||
|
|
@ -41,19 +43,19 @@ class ProfileChangeContentFormatter @Inject constructor(
|
|||
if (senderIsYou) {
|
||||
sp.getString(R.string.state_event_display_name_changed_from_by_you, prevDisplayName, displayName)
|
||||
} 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) {
|
||||
if (senderIsYou) {
|
||||
sp.getString(R.string.state_event_display_name_set_by_you, displayName)
|
||||
} 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 {
|
||||
if (senderIsYou) {
|
||||
sp.getString(R.string.state_event_display_name_removed_by_you, prevDisplayName)
|
||||
} else {
|
||||
sp.getString(R.string.state_event_display_name_removed, senderDisplayName, prevDisplayName)
|
||||
sp.getString(R.string.state_event_display_name_removed, senderId.value, prevDisplayName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -733,7 +733,7 @@ class DefaultRoomLastMessageFormatterTest {
|
|||
|
||||
val someoneChangedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = changedContent)
|
||||
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 youSetDisplayName = formatter.format(youSetDisplayNameEvent, false)
|
||||
|
|
@ -741,7 +741,7 @@ class DefaultRoomLastMessageFormatterTest {
|
|||
|
||||
val someoneSetDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = setContent)
|
||||
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 youRemovedDisplayName = formatter.format(youRemovedDisplayNameEvent, false)
|
||||
|
|
@ -749,7 +749,7 @@ class DefaultRoomLastMessageFormatterTest {
|
|||
|
||||
val someoneRemovedDisplayNameEvent = createRoomEvent(sentByYou = false, senderDisplayName = otherName, content = removedContent)
|
||||
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 unchangedResult = formatter.format(unchangedEvent, false)
|
||||
|
|
@ -828,7 +828,7 @@ class DefaultRoomLastMessageFormatterTest {
|
|||
// endregion
|
||||
|
||||
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)
|
||||
return anEventTimelineItem(
|
||||
content = content,
|
||||
|
|
@ -837,4 +837,6 @@ class DefaultRoomLastMessageFormatterTest {
|
|||
isOwn = sentByYou,
|
||||
)
|
||||
}
|
||||
|
||||
private val someoneElseId = UserId("@someone_else:domain")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue