05/02 Phase B

This commit is contained in:
Nguyen Ngo
2026-05-02 11:46:28 -04:00
parent ef0a6448cf
commit 8bdcbecd73
22 changed files with 3262 additions and 69 deletions
+34 -19
View File
@@ -1,32 +1,47 @@
//
// JanitorialQCApp.swift
// JanitorialQC
//
// Created by Nguyen Ngo on 5/2/26.
//
// JanitorialQC.swift
// ------------
// App entry point. Phase B adds LocalInspection, LocalIssue,
// PendingPhoto, and SyncQueueEntry to the SwiftData model container.
import SwiftUI
import SwiftData
@main
struct JanitorialQCApp: App {
var sharedModelContainer: ModelContainer = {
let schema = Schema([
Item.self,
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
struct JanitorialQC: App {
do {
return try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
@StateObject private var auth = AuthManager.shared
@StateObject private var sync = SyncManager.shared
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(auth)
.environmentObject(sync)
}
.modelContainer(for: [
// Phase A
LocalFacility.self,
LocalArea.self,
LocalTemplate.self,
// Phase B
LocalInspection.self,
LocalIssue.self,
PendingPhoto.self,
SyncQueueEntry.self,
], isUndoEnabled: false) { result in
switch result {
case .success(let container):
Task { @MainActor in
SyncManager.shared.modelContext = container.mainContext
await AuthManager.shared.restoreSession()
SyncManager.shared.startMonitoring()
if SyncManager.shared.isOnline {
await SyncManager.shared.triggerSync()
}
}
case .failure(let error):
fatalError("SwiftData container failed: \(error)")
}
}
.modelContainer(sharedModelContainer)
}
}