Sign the macOS app and keep its state in SwiftData with iCloud sync
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import Foundation
|
||||
import Observation
|
||||
import SwiftData
|
||||
|
||||
let taskTabs: [TaskTab] = [.transcript, .changes, .files, .terminal, .inbox, .reviews, .workflow, .project]
|
||||
|
||||
private let historyPage = 1000
|
||||
private let leadPage = 50
|
||||
private let visitsKey = "byre.visits"
|
||||
|
||||
struct TaskState {
|
||||
enum Kind {
|
||||
@@ -360,16 +360,26 @@ final class Store {
|
||||
}
|
||||
|
||||
func lastVisits() -> [String: Double] {
|
||||
UserDefaults.standard.dictionary(forKey: visitsKey) as? [String: Double] ?? [:]
|
||||
fetchRecords(FetchDescriptor<VisitRecord>()).reduce(into: [:]) { visits, v in
|
||||
visits[v.taskId] = max(visits[v.taskId] ?? 0, v.at)
|
||||
}
|
||||
}
|
||||
|
||||
private func markVisited(_ taskId: String?) {
|
||||
guard let taskId else {
|
||||
return
|
||||
}
|
||||
var visits = lastVisits()
|
||||
visits[taskId] = Date().timeIntervalSince1970 * 1000
|
||||
UserDefaults.standard.set(visits, forKey: visitsKey)
|
||||
let at = Date().timeIntervalSince1970 * 1000
|
||||
let records = fetchRecords(FetchDescriptor<VisitRecord>(predicate: #Predicate { $0.taskId == taskId }))
|
||||
if records.isEmpty {
|
||||
persistence.insert(VisitRecord(taskId: taskId, at: at))
|
||||
} else {
|
||||
records[0].at = at
|
||||
for record in records.dropFirst() {
|
||||
persistence.delete(record)
|
||||
}
|
||||
}
|
||||
saveRecords()
|
||||
}
|
||||
|
||||
func loadSummaryReads() async throws {
|
||||
|
||||
Reference in New Issue
Block a user