velody/apps/apple/VelodyMac/Sources/FolderAccessService.swift
2026-05-24 20:53:42 +02:00

48 lines
1.2 KiB
Swift

import AppKit
import Foundation
@MainActor
final class FolderAccessService {
private let bookmarkKey = "velody.selected-folder.bookmark"
func chooseFolder() -> URL? {
let panel = NSOpenPanel()
panel.canChooseDirectories = true
panel.canChooseFiles = false
panel.allowsMultipleSelection = false
panel.prompt = "Choose Folder"
guard panel.runModal() == .OK, let url = panel.url else {
return nil
}
do {
let bookmark = try url.bookmarkData(
options: [.withSecurityScope],
includingResourceValuesForKeys: nil,
relativeTo: nil
)
UserDefaults.standard.set(bookmark, forKey: bookmarkKey)
return url
} catch {
return url
}
}
func storedFolderURL() -> URL? {
guard
let bookmark = UserDefaults.standard.data(forKey: bookmarkKey)
else {
return nil
}
var isStale = false
return try? URL(
resolvingBookmarkData: bookmark,
options: [.withSecurityScope],
relativeTo: nil,
bookmarkDataIsStale: &isStale
)
}
}