From 6d812a2fc007497dcba4276edbecf018ccbd85ef Mon Sep 17 00:00:00 2001 From: glasfisch3000 Date: Wed, 22 Jul 2026 18:21:40 +0200 Subject: [PATCH 1/3] fix x mark when creating new threads --- MactrixLibrary/Sources/UI/Timeline/ThreadTimelineHeader.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MactrixLibrary/Sources/UI/Timeline/ThreadTimelineHeader.swift b/MactrixLibrary/Sources/UI/Timeline/ThreadTimelineHeader.swift index 92d9bc9..5cecff3 100644 --- a/MactrixLibrary/Sources/UI/Timeline/ThreadTimelineHeader.swift +++ b/MactrixLibrary/Sources/UI/Timeline/ThreadTimelineHeader.swift @@ -12,7 +12,7 @@ public struct ThreadTimelineHeader: View { Divider() HStack(alignment: .firstTextBaseline) { Button(action: dismiss) { - Label("Close thread", systemImage: "x.circle.fill") + Label("Close thread", systemImage: "xmark.circle.fill") } .buttonStyle(.plain) .labelStyle(.iconOnly) From c989357f04607e75101a0154f935b82979e8fb4e Mon Sep 17 00:00:00 2001 From: glasfisch3000 Date: Thu, 23 Jul 2026 01:29:43 +0200 Subject: [PATCH 2/3] fix timeline equatable implementation --- Mactrix/Models/LiveTimeline.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mactrix/Models/LiveTimeline.swift b/Mactrix/Models/LiveTimeline.swift index 66e9f54..5430c0a 100644 --- a/Mactrix/Models/LiveTimeline.swift +++ b/Mactrix/Models/LiveTimeline.swift @@ -201,6 +201,6 @@ extension LiveTimeline { extension LiveTimeline: Equatable { public nonisolated static func == (lhs: LiveTimeline, rhs: LiveTimeline) -> Bool { - lhs.room.id == rhs.room.id + lhs.room.id == rhs.room.id && lhs.focusedThreadId == rhs.focusedThreadId } } From ce771ec23e79266f366001c0320ff9a50f500e9b Mon Sep 17 00:00:00 2001 From: glasfisch3000 Date: Thu, 23 Jul 2026 12:10:35 +0200 Subject: [PATCH 3/3] fix thread messages not loading --- Mactrix/Models/LiveTimeline.swift | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Mactrix/Models/LiveTimeline.swift b/Mactrix/Models/LiveTimeline.swift index 5430c0a..d3460e1 100644 --- a/Mactrix/Models/LiveTimeline.swift +++ b/Mactrix/Models/LiveTimeline.swift @@ -80,14 +80,11 @@ public final class LiveTimeline { await listenToTimelineChanges() - // Only main timelines can subscibe to back pagination status - if threadId == nil { - do { - try await listenToPaginationStatus() - } catch { - Logger.liveTimeline.error("Failed to listen to pagination status: \(error)") - } - } + do { + try await listenToPaginationStatus(threadId: threadId) + } catch { + Logger.liveTimeline.error("Failed to listen to pagination status: \(error)") + } } private func listenToTimelineChanges() async { @@ -104,11 +101,17 @@ public final class LiveTimeline { } } - private func listenToPaginationStatus() async throws { + private func listenToPaginationStatus(threadId: String?) async throws { guard let timeline else { return } let listener = AsyncSDKListener() - paginateHandle = try await timeline.subscribeToBackPaginationStatus(listener: listener) + // Only main timelines can subscibe to back pagination status + if threadId == nil { + paginateHandle = try await timeline.subscribeToBackPaginationStatus(listener: listener) + } else { + // if in a thread, instead push one initial status manually to kick off message fetching + listener.publishValue(.idle(hitTimelineStart: false)) + } Task { [weak self] in for await status in listener {