Filtered out unwanted state events for DMs (#2361)

This commit is contained in:
Mauro
2024-01-19 18:58:29 +01:00
committed by GitHub
parent a64ad5ddf6
commit faeab892a9
4 changed files with 14 additions and 5 deletions
@@ -294,8 +294,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
// Otherwise check if we need to add anything to the top of the timeline. // Otherwise check if we need to add anything to the top of the timeline.
switch timelineProvider.backPaginationState { switch timelineProvider.backPaginationState {
case .timelineStartReached: case .timelineStartReached:
let timelineStart = TimelineStartRoomTimelineItem(name: roomProxy.displayName ?? roomProxy.name) if !roomProxy.isEncryptedOneToOneRoom {
newTimelineItems.insert(timelineStart, at: 0) let timelineStart = TimelineStartRoomTimelineItem(name: roomProxy.displayName ?? roomProxy.name)
newTimelineItems.insert(timelineStart, at: 0)
}
canBackPaginate = false canBackPaginate = false
case .paginating: case .paginating:
newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(), at: 0) newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(), at: 0)
@@ -317,7 +319,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
private func buildTimelineItem(for itemProxy: TimelineItemProxy) -> RoomTimelineItemProtocol? { private func buildTimelineItem(for itemProxy: TimelineItemProxy) -> RoomTimelineItemProtocol? {
switch itemProxy { switch itemProxy {
case .event(let eventTimelineItem): case .event(let eventTimelineItem):
let timelineItem = timelineItemFactory.buildTimelineItem(for: eventTimelineItem) let timelineItem = timelineItemFactory.buildTimelineItem(for: eventTimelineItem, isDM: roomProxy.isEncryptedOneToOneRoom)
// When backup is enabled just show the timeline items, they will most likely // When backup is enabled just show the timeline items, they will most likely
// resolve eventually. If we don't know the backup state then we assume the session is not verified yet, // resolve eventually. If we don't know the backup state then we assume the session is not verified yet,
@@ -33,7 +33,7 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
self.stateEventStringBuilder = stateEventStringBuilder self.stateEventStringBuilder = stateEventStringBuilder
} }
func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy) -> RoomTimelineItemProtocol? { func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy, isDM: Bool) -> RoomTimelineItemProtocol? {
let isOutgoing = eventItemProxy.isOwn let isOutgoing = eventItemProxy.isOwn
switch eventItemProxy.content.kind() { switch eventItemProxy.content.kind() {
@@ -55,8 +55,14 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol {
case .message: case .message:
return buildMessageTimelineItem(eventItemProxy, isOutgoing) return buildMessageTimelineItem(eventItemProxy, isOutgoing)
case .state(_, let content): case .state(_, let content):
if isDM, content == .roomCreate {
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, change: let change):
if isDM, change == .joined, userID == self.userID {
return nil
}
return buildStateMembershipChangeTimelineItem(for: eventItemProxy, member: userID, membershipChange: change, isOutgoing: isOutgoing) return buildStateMembershipChangeTimelineItem(for: eventItemProxy, member: userID, 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,
@@ -18,5 +18,5 @@ import Foundation
@MainActor @MainActor
protocol RoomTimelineItemFactoryProtocol { protocol RoomTimelineItemFactoryProtocol {
func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy) -> RoomTimelineItemProtocol? func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy, isDM: Bool) -> RoomTimelineItemProtocol?
} }
+1
View File
@@ -0,0 +1 @@
Removed unnecessary state events for DMs.