Jul 14 - Using CDN - update

This commit is contained in:
Nguyen Ngo
2026-07-14 15:40:16 -04:00
parent 6fbd3d1437
commit 2a0b264a5c
8 changed files with 162 additions and 49 deletions
+11 -25
View File
@@ -60,14 +60,6 @@ class SyncManager: ObservableObject {
return f
}()
/// Parses server date-only strings ("YYYY-MM-DD"), e.g. scheduled due dates.
nonisolated static let dateOnlyFormatter: DateFormatter = {
let f = DateFormatter()
f.locale = Locale(identifier: "en_US_POSIX")
f.dateFormat = "yyyy-MM-dd"
return f
}()
static let shared = SyncManager()
private init() {}
@@ -761,6 +753,9 @@ class SyncManager: ObservableObject {
serverPaths.append(contentsOf: api.mobilePhotoPaths)
existing.photoServerPaths = serverPaths
existing.resultPhotoServerPaths = api.resultPhotos
// Absolute display URLs (presigned R2 / static) parallel arrays.
existing.photoServerUrls = api.photoUrls
existing.resultPhotoServerUrls = api.resultPhotoUrls
} else {
// Insert new server-pulled issue
let local = LocalIssue(
@@ -800,6 +795,9 @@ class SyncManager: ObservableObject {
serverPaths.append(contentsOf: api.mobilePhotoPaths)
local.photoServerPaths = serverPaths
local.resultPhotoServerPaths = api.resultPhotos
// Absolute display URLs (presigned R2 / static) parallel arrays.
local.photoServerUrls = api.photoUrls
local.resultPhotoServerUrls = api.resultPhotoUrls
if let ts = api.reportedAt,
let date = Self.isoFormatter.date(from: ts) {
local.createdAt = date
@@ -852,23 +850,11 @@ class SyncManager: ObservableObject {
for row in allLocal { byServerId[row.serverId] = row }
for api in apiRows {
let row = byServerId[api.id] ?? {
let r = LocalScheduledInspection(serverId: api.id)
context.insert(r)
return r
}()
row.facilityServerId = api.facilityId
row.facilityName = api.facilityName ?? ""
row.templateServerId = api.templateId
row.templateName = api.templateName ?? ""
row.inspectorId = api.inspectorId
row.frequency = api.frequency
row.frequencyLabel = api.frequencyLabel ?? ""
row.dueDateString = api.nextDueDate ?? ""
row.nextDue = api.nextDueDate.flatMap { Self.dateOnlyFormatter.date(from: $0) }
row.isOverdue = api.isOverdue
row.notes = api.notes
row.updatedAt = Date()
if let existing = byServerId[api.id] {
existing.update(from: api)
} else {
context.insert(LocalScheduledInspection(from: api))
}
}
// Delete rows the server no longer returns.