Files
bookstax/bookstax/bookstaxApp.swift
T
2026-03-21 09:49:01 +01:00

61 lines
1.7 KiB
Swift

//
// bookstaxApp.swift
// bookstax
//
// Created by Sven Hanold on 19.03.26.
//
import SwiftUI
import SwiftData
@main
struct bookstaxApp: App {
@AppStorage("onboardingComplete") private var onboardingComplete = false
@AppStorage("appTheme") private var appTheme = "system"
@AppStorage("accentTheme") private var accentThemeRaw = AccentTheme.ocean.rawValue
private var preferredColorScheme: ColorScheme? {
switch appTheme {
case "light": return .light
case "dark": return .dark
default: return nil
}
}
private var accentTheme: AccentTheme {
AccentTheme(rawValue: accentThemeRaw) ?? .ocean
}
let sharedModelContainer: ModelContainer = {
let schema = Schema([CachedShelf.self, CachedBook.self, CachedPage.self])
let config = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
do {
return try ModelContainer(for: schema, configurations: [config])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
init() {
AppLog(.info, "BookStax launched", category: "App")
}
var body: some Scene {
WindowGroup {
Group {
if onboardingComplete {
MainTabView()
.environment(ConnectivityMonitor.shared)
} else {
OnboardingView()
}
}
.environment(\.accentTheme, accentTheme)
.tint(accentTheme.accentColor)
.preferredColorScheme(preferredColorScheme)
}
.modelContainer(sharedModelContainer)
}
}