| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //
- // ExportMenu.swift
- // Todos
- //
- // Created by Sam Jaffe on 3/1/26.
- //
- import SwiftUI
- import SwiftData
- import UniformTypeIdentifiers
- struct ExportMenu: View {
- @Environment(\.modelContext) private var modelContext
- @AppStorage(UserDefaultsKeys.Category) var allGroups = CodableArray<Category>()
- @AppStorage(UserDefaultsKeys.UrlHints) var allHints = CodableArray<URLHint>()
- @Query private var items: [Project]
- @State private var showingExporter = false
- var body: some View {
- Button("Export", systemImage: "square.and.arrow.up") {
- showingExporter = true
- }
- .keyboardShortcut("E", modifiers: [.command, .shift])
- .fileExporter(isPresented: $showingExporter, document: StubJsonDocument(),
- contentType: .json) { result in
- switch result {
- case .success(let url):
- let transfer = Transfer(projects: items, hints: allHints, categories: allGroups)
- guard let data = try? JSONEncoder().encode(transfer)
- else {
- return
- }
- SaveController().save(data: data, toUrl: url)
- case .failure(let error):
- print(error.localizedDescription)
- }
- }
- }
- }
- #Preview {
- ExportMenu()
- }
|