06/23 Fix Medium//Low-impact issues

This commit is contained in:
Nguyen Ngo
2026-06-23 18:03:40 -04:00
parent a1afea095d
commit fc571b3faa
5 changed files with 173 additions and 39 deletions
+15 -2
View File
@@ -15,6 +15,10 @@ final class LocalTemplate {
var formSchemaJSON: String
var lastSyncedAt: Date
var isActive: Bool = true // phase21 false templates excluded from picker
/// Timestamp of the last successful schema fetch (GET /api/v1/templates/{id}).
/// Nil when the schema has never been fetched (e.g. template just inserted).
/// Used to skip redundant detail calls when summary fields are unchanged.
var schemaFetchedAt: Date? = nil
init(from summary: APITemplateSummary) {
self.serverId = summary.id
@@ -26,12 +30,20 @@ final class LocalTemplate {
self.isActive = summary.isActive
}
func updateSummary(from summary: APITemplateSummary) {
/// Update summary fields and return whether any field changed.
/// Used by pullReferenceData to skip schema re-fetching when nothing changed.
@discardableResult
func updateSummary(from summary: APITemplateSummary) -> Bool {
let changed = name != summary.name
|| templateDescription != summary.description
|| frequency != summary.frequency
|| isActive != summary.isActive
self.name = summary.name
self.templateDescription = summary.description
self.frequency = summary.frequency
self.isActive = summary.isActive
self.lastSyncedAt = Date()
return changed
}
func updateSchema(from template: APITemplate) {
@@ -43,7 +55,8 @@ final class LocalTemplate {
let str = String(data: data, encoding: .utf8) {
self.formSchemaJSON = str
}
self.lastSyncedAt = Date()
self.schemaFetchedAt = Date()
self.lastSyncedAt = Date()
}
/// Decode stored JSON back into [[String: Any]] for the form renderer