53 lines
1.4 KiB
Swift
53 lines
1.4 KiB
Swift
import SwiftUI
|
|
import SwiftData
|
|
|
|
private enum MainScreenSelection: Int {
|
|
case unlock = 0
|
|
case settings = 1
|
|
case history = 2
|
|
}
|
|
|
|
@main
|
|
struct SesameWatchApp: App {
|
|
|
|
@State
|
|
var modelContainer: ModelContainer
|
|
|
|
@ObservedObject
|
|
var coordinator: RequestCoordinator
|
|
|
|
let keyManagement = KeyManagement()
|
|
|
|
@State
|
|
private var selectedScreen: MainScreenSelection = .unlock
|
|
|
|
@State
|
|
var didLaunchFromComplication = false
|
|
|
|
init() {
|
|
let modelContainer = SesameWatchApp.loadModelContainer()
|
|
self.modelContainer = modelContainer
|
|
self.coordinator = .init(modelContext: modelContainer.mainContext)
|
|
}
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
TabView(selection: $selectedScreen) {
|
|
ContentView(coordinator: coordinator, didLaunchFromComplication: $didLaunchFromComplication)
|
|
.tag(MainScreenSelection.unlock)
|
|
SettingsView()
|
|
.environmentObject(keyManagement)
|
|
.tag(MainScreenSelection.settings)
|
|
HistoryView()
|
|
.tag(MainScreenSelection.history)
|
|
}
|
|
.tabViewStyle(PageTabViewStyle())
|
|
.onOpenURL { url in
|
|
didLaunchFromComplication = true
|
|
selectedScreen = .unlock
|
|
}
|
|
}
|
|
.modelContainer(modelContainer)
|
|
}
|
|
}
|