| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- //
- // 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<Category>()
- @AppStorage(UserDefaultsKeys.UrlHints) var allHints = CodableArray<URLHint>()
- @State private var showingExporter = false
- var body: some View {
- Button("Import") {
- 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()
- }
|