diff --git a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift index 95ab7dc611..b33f6f95ac 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift @@ -294,8 +294,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol { // Otherwise check if we need to add anything to the top of the timeline. switch timelineProvider.backPaginationState { case .timelineStartReached: - let timelineStart = TimelineStartRoomTimelineItem(name: roomProxy.displayName ?? roomProxy.name) - newTimelineItems.insert(timelineStart, at: 0) + if !roomProxy.isEncryptedOneToOneRoom { + let timelineStart = TimelineStartRoomTimelineItem(name: roomProxy.displayName ?? roomProxy.name) + newTimelineItems.insert(timelineStart, at: 0) + } canBackPaginate = false case .paginating: newTimelineItems.insert(PaginationIndicatorRoomTimelineItem(), at: 0) @@ -317,7 +319,7 @@ class RoomTimelineController: RoomTimelineControllerProtocol { private func buildTimelineItem(for itemProxy: TimelineItemProxy) -> RoomTimelineItemProtocol? { switch itemProxy { 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 // resolve eventually. If we don't know the backup state then we assume the session is not verified yet, diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift index 6c7b79b669..a109dcdee2 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift @@ -33,7 +33,7 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { self.stateEventStringBuilder = stateEventStringBuilder } - func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy) -> RoomTimelineItemProtocol? { + func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy, isDM: Bool) -> RoomTimelineItemProtocol? { let isOutgoing = eventItemProxy.isOwn switch eventItemProxy.content.kind() { @@ -55,8 +55,14 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { case .message: return buildMessageTimelineItem(eventItemProxy, isOutgoing) case .state(_, let content): + if isDM, content == .roomCreate { + return nil + } return buildStateTimelineItem(for: eventItemProxy, state: content, isOutgoing: isOutgoing) 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) case .profileChange(let displayName, let prevDisplayName, let avatarUrl, let prevAvatarUrl): return buildStateProfileChangeTimelineItem(for: eventItemProxy, diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactoryProtocol.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactoryProtocol.swift index 71f4613617..1f4a453d5e 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactoryProtocol.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactoryProtocol.swift @@ -18,5 +18,5 @@ import Foundation @MainActor protocol RoomTimelineItemFactoryProtocol { - func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy) -> RoomTimelineItemProtocol? + func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy, isDM: Bool) -> RoomTimelineItemProtocol? } diff --git a/changelog.d/2329.change b/changelog.d/2329.change new file mode 100644 index 0000000000..f09c06f8e9 --- /dev/null +++ b/changelog.d/2329.change @@ -0,0 +1 @@ +Removed unnecessary state events for DMs. \ No newline at end of file