Skip to content

Commit

Permalink
Update UI when pin/title is changed via Settings
Browse files Browse the repository at this point in the history
  • Loading branch information
p0deje committed Jul 27, 2024
1 parent d1cc258 commit 889d244
Showing 1 changed file with 42 additions and 2 deletions.
44 changes: 42 additions & 2 deletions Maccy/Observables/HistoryItemDecorator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@ class HistoryItemDecorator: Identifiable, Hashable {
self.shortcuts = shortcuts
self.title = item.title

Task {
await observeItemPin()
}
Task {
await observeItemTitle()
}
Task {
await sizeImages()
}
Expand Down Expand Up @@ -110,11 +116,45 @@ class HistoryItemDecorator: Identifiable, Hashable {
func togglePin() {
if item.pin != nil {
item.pin = nil
shortcuts = []
} else {
let pin = HistoryItem.randomAvailablePin
item.pin = pin
shortcuts = KeyShortcut.create(character: pin)
}
}

private func observeItemPin() async {
let pinSet = AsyncStream {
await withCheckedContinuation { continuation in
let _ = withObservationTracking {
self.item.pin
} onChange: {
continuation.resume()
}
}

return self.item.pin
}

for await pin in pinSet {
self.shortcuts = KeyShortcut.create(character: pin)
}
}

private func observeItemTitle() async {
let titleSet = AsyncStream {
await withCheckedContinuation { continuation in
let _ = withObservationTracking {
self.item.title
} onChange: {
continuation.resume()
}
}

return self.item.title
}

for await title in titleSet {
self.title = title
}
}
}

0 comments on commit 889d244

Please sign in to comment.