mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
room membership change states will use displayName
changelog code improvement
This commit is contained in:
committed by
Stefan Ceriu
parent
7ba1e491fa
commit
61e00cf0f7
@@ -51,9 +51,9 @@ struct RoomEventStringBuilder {
|
|||||||
return stateEventStringBuilder
|
return stateEventStringBuilder
|
||||||
.buildString(for: state, sender: sender, isOutgoing: isOutgoing)
|
.buildString(for: state, sender: sender, isOutgoing: isOutgoing)
|
||||||
.map(AttributedString.init)
|
.map(AttributedString.init)
|
||||||
case .roomMembership(let userID, _, let change):
|
case .roomMembership(let userID, let displayName, let change):
|
||||||
return stateEventStringBuilder
|
return stateEventStringBuilder
|
||||||
.buildString(for: change, member: userID, sender: sender, isOutgoing: isOutgoing)
|
.buildString(for: change, memberUserID: userID, memberDisplayName: displayName, sender: sender, isOutgoing: isOutgoing)
|
||||||
.map(AttributedString.init)
|
.map(AttributedString.init)
|
||||||
case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl):
|
case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl):
|
||||||
return stateEventStringBuilder
|
return stateEventStringBuilder
|
||||||
|
|||||||
+18
-16
@@ -22,7 +22,8 @@ struct RoomStateEventStringBuilder {
|
|||||||
var shouldDisambiguateDisplayNames = true
|
var shouldDisambiguateDisplayNames = true
|
||||||
|
|
||||||
func buildString(for change: MembershipChange?,
|
func buildString(for change: MembershipChange?,
|
||||||
member: String,
|
memberUserID: String,
|
||||||
|
memberDisplayName: String?,
|
||||||
sender: TimelineItemSender,
|
sender: TimelineItemSender,
|
||||||
isOutgoing: Bool) -> String? {
|
isOutgoing: Bool) -> String? {
|
||||||
guard let change else {
|
guard let change else {
|
||||||
@@ -31,8 +32,9 @@ struct RoomStateEventStringBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let senderIsYou = isOutgoing
|
let senderIsYou = isOutgoing
|
||||||
let memberIsYou = member == userID
|
let memberIsYou = memberUserID == userID
|
||||||
let displayName = if shouldDisambiguateDisplayNames {
|
let member = memberDisplayName ?? memberUserID
|
||||||
|
let senderDisplayName = if shouldDisambiguateDisplayNames {
|
||||||
sender.disambiguatedDisplayName ?? sender.id
|
sender.disambiguatedDisplayName ?? sender.id
|
||||||
} else {
|
} else {
|
||||||
sender.displayName ?? sender.id
|
sender.displayName ?? sender.id
|
||||||
@@ -40,42 +42,42 @@ struct RoomStateEventStringBuilder {
|
|||||||
|
|
||||||
switch change {
|
switch change {
|
||||||
case .joined:
|
case .joined:
|
||||||
return memberIsYou ? L10n.stateEventRoomJoinByYou : L10n.stateEventRoomJoin(displayName)
|
return memberIsYou ? L10n.stateEventRoomJoinByYou : L10n.stateEventRoomJoin(senderDisplayName)
|
||||||
case .left:
|
case .left:
|
||||||
return memberIsYou ? L10n.stateEventRoomLeaveByYou : L10n.stateEventRoomLeave(displayName)
|
return memberIsYou ? L10n.stateEventRoomLeaveByYou : L10n.stateEventRoomLeave(senderDisplayName)
|
||||||
case .banned, .kickedAndBanned:
|
case .banned, .kickedAndBanned:
|
||||||
return senderIsYou ? L10n.stateEventRoomBanByYou(member) : L10n.stateEventRoomBan(displayName, member)
|
return senderIsYou ? L10n.stateEventRoomBanByYou(member) : L10n.stateEventRoomBan(senderDisplayName, member)
|
||||||
case .unbanned:
|
case .unbanned:
|
||||||
return senderIsYou ? L10n.stateEventRoomUnbanByYou(member) : L10n.stateEventRoomUnban(displayName, member)
|
return senderIsYou ? L10n.stateEventRoomUnbanByYou(member) : L10n.stateEventRoomUnban(senderDisplayName, member)
|
||||||
case .kicked:
|
case .kicked:
|
||||||
return senderIsYou ? L10n.stateEventRoomRemoveByYou(member) : L10n.stateEventRoomRemove(displayName, member)
|
return senderIsYou ? L10n.stateEventRoomRemoveByYou(member) : L10n.stateEventRoomRemove(senderDisplayName, member)
|
||||||
case .invited:
|
case .invited:
|
||||||
if senderIsYou {
|
if senderIsYou {
|
||||||
return L10n.stateEventRoomInviteByYou(member)
|
return L10n.stateEventRoomInviteByYou(member)
|
||||||
} else if memberIsYou {
|
} else if memberIsYou {
|
||||||
return L10n.stateEventRoomInviteYou(displayName)
|
return L10n.stateEventRoomInviteYou(senderDisplayName)
|
||||||
} else {
|
} else {
|
||||||
return L10n.stateEventRoomInvite(displayName, member)
|
return L10n.stateEventRoomInvite(senderDisplayName, member)
|
||||||
}
|
}
|
||||||
case .invitationAccepted:
|
case .invitationAccepted:
|
||||||
return memberIsYou ? L10n.stateEventRoomInviteAcceptedByYou : L10n.stateEventRoomInviteAccepted(displayName)
|
return memberIsYou ? L10n.stateEventRoomInviteAcceptedByYou : L10n.stateEventRoomInviteAccepted(senderDisplayName)
|
||||||
case .invitationRejected:
|
case .invitationRejected:
|
||||||
return memberIsYou ? L10n.stateEventRoomRejectByYou : L10n.stateEventRoomReject(displayName)
|
return memberIsYou ? L10n.stateEventRoomRejectByYou : L10n.stateEventRoomReject(senderDisplayName)
|
||||||
case .invitationRevoked:
|
case .invitationRevoked:
|
||||||
return senderIsYou ? L10n.stateEventRoomThirdPartyRevokedInviteByYou(member) : L10n.stateEventRoomThirdPartyRevokedInvite(displayName, member)
|
return senderIsYou ? L10n.stateEventRoomThirdPartyRevokedInviteByYou(member) : L10n.stateEventRoomThirdPartyRevokedInvite(senderDisplayName, member)
|
||||||
case .knocked:
|
case .knocked:
|
||||||
return memberIsYou ? L10n.stateEventRoomKnockByYou : L10n.stateEventRoomKnock(member)
|
return memberIsYou ? L10n.stateEventRoomKnockByYou : L10n.stateEventRoomKnock(member)
|
||||||
case .knockAccepted:
|
case .knockAccepted:
|
||||||
return senderIsYou ? L10n.stateEventRoomKnockAcceptedByYou(displayName) : L10n.stateEventRoomKnockAccepted(displayName, member)
|
return senderIsYou ? L10n.stateEventRoomKnockAcceptedByYou(senderDisplayName) : L10n.stateEventRoomKnockAccepted(senderDisplayName, member)
|
||||||
case .knockRetracted:
|
case .knockRetracted:
|
||||||
return memberIsYou ? L10n.stateEventRoomKnockRetractedByYou : L10n.stateEventRoomKnockRetracted(member)
|
return memberIsYou ? L10n.stateEventRoomKnockRetractedByYou : L10n.stateEventRoomKnockRetracted(member)
|
||||||
case .knockDenied:
|
case .knockDenied:
|
||||||
if senderIsYou {
|
if senderIsYou {
|
||||||
return L10n.stateEventRoomKnockDeniedByYou(member)
|
return L10n.stateEventRoomKnockDeniedByYou(member)
|
||||||
} else if memberIsYou {
|
} else if memberIsYou {
|
||||||
return L10n.stateEventRoomKnockDeniedYou(displayName)
|
return L10n.stateEventRoomKnockDeniedYou(senderDisplayName)
|
||||||
} else {
|
} else {
|
||||||
return L10n.stateEventRoomKnockDenied(displayName, member)
|
return L10n.stateEventRoomKnockDenied(senderDisplayName, member)
|
||||||
}
|
}
|
||||||
case .none, .error, .notImplemented: // Not useful information for the user.
|
case .none, .error, .notImplemented: // Not useful information for the user.
|
||||||
MXLog.verbose("Filtering timeline item for membership change: \(change)")
|
MXLog.verbose("Filtering timeline item for membership change: \(change)")
|
||||||
|
|||||||
@@ -59,11 +59,11 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return buildStateTimelineItem(for: eventItemProxy, state: content, isOutgoing: isOutgoing)
|
return buildStateTimelineItem(for: eventItemProxy, state: content, isOutgoing: isOutgoing)
|
||||||
case .roomMembership(userId: let userID, _, change: let change):
|
case .roomMembership(userId: let userID, let displayName, change: let change):
|
||||||
if isDM, change == .joined, userID == self.userID {
|
if isDM, change == .joined, userID == self.userID {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return buildStateMembershipChangeTimelineItem(for: eventItemProxy, member: userID, membershipChange: change, isOutgoing: isOutgoing)
|
return buildStateMembershipChangeTimelineItem(for: eventItemProxy, memberUserID: userID, memberDisplayName: displayName, membershipChange: change, isOutgoing: isOutgoing)
|
||||||
case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl):
|
case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl):
|
||||||
return buildStateProfileChangeTimelineItem(for: eventItemProxy,
|
return buildStateProfileChangeTimelineItem(for: eventItemProxy,
|
||||||
displayName: displayName,
|
displayName: displayName,
|
||||||
@@ -609,10 +609,11 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func buildStateMembershipChangeTimelineItem(for eventItemProxy: EventTimelineItemProxy,
|
private func buildStateMembershipChangeTimelineItem(for eventItemProxy: EventTimelineItemProxy,
|
||||||
member: String,
|
memberUserID: String,
|
||||||
|
memberDisplayName: String?,
|
||||||
membershipChange: MembershipChange?,
|
membershipChange: MembershipChange?,
|
||||||
isOutgoing: Bool) -> RoomTimelineItemProtocol? {
|
isOutgoing: Bool) -> RoomTimelineItemProtocol? {
|
||||||
guard let text = stateEventStringBuilder.buildString(for: membershipChange, member: member, sender: eventItemProxy.sender, isOutgoing: isOutgoing) else { return nil }
|
guard let text = stateEventStringBuilder.buildString(for: membershipChange, memberUserID: memberUserID, memberDisplayName: memberDisplayName, sender: eventItemProxy.sender, isOutgoing: isOutgoing) else { return nil }
|
||||||
return buildStateTimelineItem(for: eventItemProxy, text: text, isOutgoing: isOutgoing)
|
return buildStateTimelineItem(for: eventItemProxy, text: text, isOutgoing: isOutgoing)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Room membership state changes will use the display name whenever possible.
|
||||||
Reference in New Issue
Block a user