From a7cfd9139956628984bcbf228d45b2195f5e9458 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 21 Oct 2026 14:10:13 -0700 Subject: [PATCH] Use one observable source for Changes tab preferences --- mac/Sources/Byre/Changes.swift | 27 +++++++++++++-------------- mac/Sources/Byre/Store.swift | 2 +- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/mac/Sources/Byre/Changes.swift b/mac/Sources/Byre/Changes.swift index 76a8bec..735cf89 100644 --- a/mac/Sources/Byre/Changes.swift +++ b/mac/Sources/Byre/Changes.swift @@ -22,7 +22,9 @@ private let emptyText: [ChangeMode: String] = [ .step: "This snapshot changed nothing.", ] -struct ChangesMemory { +@MainActor +@Observable +final class ChangesMemory { var open: Set = [] var range = ChangeMode.main var pinRange = ChangeMode.step @@ -41,9 +43,7 @@ final class ChangesModel { private(set) var changes: TaskChanges? private(set) var error = "" private(set) var diffs: [String: Result] = [:] - private(set) var open: Set - private(set) var range: ChangeMode - private(set) var pinRange: ChangeMode + private let memory: ChangesMemory @ObservationIgnored private var loading = false @ObservationIgnored private var again = false @ObservationIgnored private var timer: Task? @@ -53,11 +53,13 @@ final class ChangesModel { init(_ store: Store) { self.store = store - open = store.changesMemory.open - range = store.changesMemory.range - pinRange = store.changesMemory.pinRange + memory = store.changesMemory } + var open: Set { memory.open } + var range: ChangeMode { memory.range } + var pinRange: ChangeMode { memory.pinRange } + var pinned: Int? { store.pinned } @@ -160,8 +162,7 @@ final class ChangesModel { if range == r { return } - range = r - store.changesMemory.range = r + memory.range = r retarget() } @@ -169,18 +170,16 @@ final class ChangesModel { if pinRange == r { return } - pinRange = r - store.changesMemory.pinRange = r + memory.pinRange = r retarget() } func setOpen(_ path: String, _ on: Bool) { if on { - open.insert(path) + memory.open.insert(path) } else { - open.remove(path) + memory.open.remove(path) } - store.changesMemory.open = open } func shows(_ a: LineAnchor) -> Bool { diff --git a/mac/Sources/Byre/Store.swift b/mac/Sources/Byre/Store.swift index 53755bb..cae6e0e 100644 --- a/mac/Sources/Byre/Store.swift +++ b/mac/Sources/Byre/Store.swift @@ -88,7 +88,7 @@ final class Store { @ObservationIgnored private var globalStream: EventStream? @ObservationIgnored private var leadStream: EventStream? @ObservationIgnored private var stopped = false - @ObservationIgnored var changesMemory = ChangesMemory() + let changesMemory = ChangesMemory() @ObservationIgnored private var localSends: [String: LocalSends] = [:] init(api: API, images: ImageDrafts, forwards: Forwards) {