// // Nextcloud_Cookbook_iOS_ClientApp.swift // Nextcloud Cookbook iOS Client // // Created by Vincent Meilinger on 06.09.23. // import SwiftUI import SwiftUI @main struct Nextcloud_Cookbook_iOS_ClientApp: App { @AppStorage("onboarding") var onboarding = true @AppStorage("language") var language = Locale.current.language.languageCode?.identifier ?? "en" @AppStorage("appearanceMode") var appearanceMode = AppearanceMode.system.rawValue @State private var pendingImportURL: String? var colorScheme: ColorScheme? { switch appearanceMode { case AppearanceMode.light.rawValue: return .light case AppearanceMode.dark.rawValue: return .dark default: return nil } } var body: some Scene { WindowGroup { ZStack { if onboarding { OnboardingView() } else { MainView(pendingImportURL: $pendingImportURL) } } .preferredColorScheme(colorScheme) .transition(.slide) .environment( \.locale, .init(identifier: language == SupportedLanguage.DEVICE.rawValue ? (Locale.current.language.languageCode?.identifier ?? "en") : language) ) .onOpenURL { url in guard !onboarding else { return } guard url.scheme == "nextcloud-cookbook", url.host == "import", let components = URLComponents(url: url, resolvingAgainstBaseURL: false), let recipeURL = components.queryItems?.first(where: { $0.name == "url" })?.value, !recipeURL.isEmpty else { return } pendingImportURL = recipeURL } } } }