mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Show the kick/ban reason in the timeline. (#4071)
This commit is contained in:
@@ -13,6 +13,7 @@ struct RoomStateEventStringBuilder {
|
||||
var shouldDisambiguateDisplayNames = true
|
||||
|
||||
func buildString(for change: MembershipChange?,
|
||||
reason: String?,
|
||||
memberUserID: String,
|
||||
memberDisplayName: String?,
|
||||
sender: TimelineItemSender,
|
||||
@@ -37,11 +38,21 @@ struct RoomStateEventStringBuilder {
|
||||
case .left:
|
||||
return memberIsYou ? L10n.stateEventRoomLeaveByYou : L10n.stateEventRoomLeave(member)
|
||||
case .banned, .kickedAndBanned:
|
||||
return senderIsYou ? L10n.stateEventRoomBanByYou(member) : L10n.stateEventRoomBan(senderDisplayName, member)
|
||||
return switch (senderIsYou, reason) {
|
||||
case (true, .some(let reason)): L10n.stateEventRoomBanByYouWithReason(member, reason)
|
||||
case (true, .none): L10n.stateEventRoomBanByYou(member)
|
||||
case (false, .some(let reason)): L10n.stateEventRoomBanWithReason(senderDisplayName, member, reason)
|
||||
case (false, .none): L10n.stateEventRoomBan(senderDisplayName, member)
|
||||
}
|
||||
case .unbanned:
|
||||
return senderIsYou ? L10n.stateEventRoomUnbanByYou(member) : L10n.stateEventRoomUnban(senderDisplayName, member)
|
||||
case .kicked:
|
||||
return senderIsYou ? L10n.stateEventRoomRemoveByYou(member) : L10n.stateEventRoomRemove(senderDisplayName, member)
|
||||
return switch (senderIsYou, reason) {
|
||||
case (true, .some(let reason)): L10n.stateEventRoomRemoveByYouWithReason(member, reason)
|
||||
case (true, .none): L10n.stateEventRoomRemoveByYou(member)
|
||||
case (false, .some(let reason)): L10n.stateEventRoomRemoveWithReason(senderDisplayName, member, reason)
|
||||
case (false, .none): L10n.stateEventRoomRemove(senderDisplayName, member)
|
||||
}
|
||||
case .invited:
|
||||
if senderIsYou {
|
||||
return L10n.stateEventRoomInviteByYou(member)
|
||||
|
||||
@@ -50,11 +50,11 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
||||
return nil
|
||||
}
|
||||
return buildStateTimelineItem(for: eventItemProxy, state: content, isOutgoing: isOutgoing)
|
||||
case .roomMembership(userId: let userID, let displayName, change: let change, _):
|
||||
case .roomMembership(userId: let userID, let displayName, change: let change, let reason):
|
||||
if isDM, change == .joined, userID == self.userID {
|
||||
return nil
|
||||
}
|
||||
return buildStateMembershipChangeTimelineItem(for: eventItemProxy, memberUserID: userID, memberDisplayName: displayName, membershipChange: change, isOutgoing: isOutgoing)
|
||||
return buildStateMembershipChangeTimelineItem(for: eventItemProxy, memberUserID: userID, memberDisplayName: displayName, membershipChange: change, reason: reason, isOutgoing: isOutgoing)
|
||||
case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl):
|
||||
return buildStateProfileChangeTimelineItem(for: eventItemProxy,
|
||||
displayName: displayName,
|
||||
@@ -728,8 +728,17 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
|
||||
memberUserID: String,
|
||||
memberDisplayName: String?,
|
||||
membershipChange: MembershipChange?,
|
||||
reason: String?,
|
||||
isOutgoing: Bool) -> RoomTimelineItemProtocol? {
|
||||
guard let text = stateEventStringBuilder.buildString(for: membershipChange, memberUserID: memberUserID, memberDisplayName: memberDisplayName, sender: eventItemProxy.sender, isOutgoing: isOutgoing) else { return nil }
|
||||
guard let text = stateEventStringBuilder.buildString(for: membershipChange,
|
||||
reason: reason,
|
||||
memberUserID: memberUserID,
|
||||
memberDisplayName: memberDisplayName,
|
||||
sender: eventItemProxy.sender,
|
||||
isOutgoing: isOutgoing) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
return buildStateTimelineItem(for: eventItemProxy, text: text, isOutgoing: isOutgoing)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user