55 lines
1.3 KiB
Swift
55 lines
1.3 KiB
Swift
import SwiftUI
|
|
|
|
@main
|
|
struct IDPGlobalApp: App {
|
|
@StateObject private var model = AppViewModel()
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
RootView(model: model)
|
|
.tint(AppTheme.accent)
|
|
.task {
|
|
await model.bootstrap()
|
|
}
|
|
.alert("Something went wrong", isPresented: errorPresented) {
|
|
Button("OK") {
|
|
model.errorMessage = nil
|
|
}
|
|
} message: {
|
|
Text(model.errorMessage ?? "")
|
|
}
|
|
}
|
|
#if os(macOS)
|
|
.defaultSize(width: 1380, height: 920)
|
|
#endif
|
|
}
|
|
|
|
private var errorPresented: Binding<Bool> {
|
|
Binding(
|
|
get: { model.errorMessage != nil },
|
|
set: { isPresented in
|
|
if !isPresented {
|
|
model.errorMessage = nil
|
|
}
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
private struct RootView: View {
|
|
@ObservedObject var model: AppViewModel
|
|
|
|
var body: some View {
|
|
Group {
|
|
if model.session == nil {
|
|
LoginRootView(model: model)
|
|
} else {
|
|
HomeRootView(model: model)
|
|
}
|
|
}
|
|
.background {
|
|
AppBackground()
|
|
}
|
|
}
|
|
}
|