Use one observable source for Changes tab preferences
This commit is contained in:
@@ -22,7 +22,9 @@ private let emptyText: [ChangeMode: String] = [
|
||||
.step: "This snapshot changed nothing.",
|
||||
]
|
||||
|
||||
struct ChangesMemory {
|
||||
@MainActor
|
||||
@Observable
|
||||
final class ChangesMemory {
|
||||
var open: Set<String> = []
|
||||
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<String, ApiError>] = [:]
|
||||
private(set) var open: Set<String>
|
||||
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<Void, Never>?
|
||||
@@ -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<String> { 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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user