Show the kick/ban reason in the timeline. (#4071)

This commit is contained in:
Doug
2025-04-28 12:17:45 +01:00
committed by GitHub
parent dac1e62e14
commit b14729cdd2
4 changed files with 105 additions and 7 deletions
@@ -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)
}