// // ImportMenu.swift // Todos // // Created by Sam Jaffe on 3/1/26. // import SwiftUI import SwiftData import UniformTypeIdentifiers struct ImportMenu: View { @Environment(\.modelContext) private var modelContext @AppStorage(UserDefaultsKeys.Category) var allGroups = CodableArray() @AppStorage(UserDefaultsKeys.UrlHints) var allHints = CodableArray() @State private var showingExporter = false var body: some View { Button("Import", systemImage: "square.and.arrow.down.on.square") { showingExporter = true } .keyboardShortcut("I", modifiers: [.command, .shift]) .fileImporter(isPresented: $showingExporter, allowedContentTypes: [.json]) { result in switch result { case .success(let url): guard let data = try? Data(contentsOf: url), let transfer = try? JSONDecoder().decode(Transfer.self, from: data) else { return } do { try modelContext.container.erase() transfer.projects.forEach(modelContext.insert) allGroups = transfer.categories allHints = transfer.hints } catch { print(error.localizedDescription) } case .failure(let error): print(error.localizedDescription) } } } } #Preview { ImportMenu() }