06/23 Fix Medium//Low-impact issues
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user