48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
// JanitorialQC.swift
|
|
// ------------
|
|
// App entry point. Phase B adds LocalInspection, LocalIssue,
|
|
// PendingPhoto, and SyncQueueEntry to the SwiftData model container.
|
|
|
|
import SwiftUI
|
|
import SwiftData
|
|
|
|
@main
|
|
struct JanitorialQC: App {
|
|
|
|
@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)")
|
|
}
|
|
}
|
|
}
|
|
}
|