aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Library/BookmarkDocument.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
commit213710bf5bd6413c747bf126db50816ef5de5a6e (patch)
tree912f8cf87955a08077c92fea8ad934f50b7ab975 /Hotline/Library/BookmarkDocument.swift
parentf466b21dc02f78c984ba6748e703f6780a7a0db4 (diff)
parent6a95b53616a4abfa306ddce43151cf4fefbd20ed (diff)
Merge remote-tracking branch 'upstream/main'
Diffstat (limited to 'Hotline/Library/BookmarkDocument.swift')
-rw-r--r--Hotline/Library/BookmarkDocument.swift32
1 files changed, 32 insertions, 0 deletions
diff --git a/Hotline/Library/BookmarkDocument.swift b/Hotline/Library/BookmarkDocument.swift
new file mode 100644
index 0000000..43f251c
--- /dev/null
+++ b/Hotline/Library/BookmarkDocument.swift
@@ -0,0 +1,32 @@
+import Foundation
+import SwiftUI
+import UniformTypeIdentifiers
+
+struct BookmarkDocument: FileDocument {
+ static var readableContentTypes: [UTType] { [.data, UTType(filenameExtension: "hlbm")!] }
+ static var writableContentTypes: [UTType] { [.data, UTType(filenameExtension: "hlbm")!] }
+
+ var bookmark: Bookmark
+
+ init(bookmark: Bookmark) {
+ self.bookmark = bookmark
+ }
+
+ init(configuration: ReadConfiguration) throws {
+ guard configuration.file.isRegularFile,
+ let data = configuration.file.regularFileContents,
+ let fileName = configuration.file.preferredFilename,
+ let bookmark = Bookmark(fileData: data, name: (fileName as NSString).deletingPathExtension)
+ else {
+ throw CocoaError(.fileReadCorruptFile)
+ }
+ self.bookmark = bookmark
+ }
+
+ func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
+ let wrapper = FileWrapper(regularFileWithContents: self.bookmark.bookmarkFileData()!)
+ wrapper.fileAttributes[FileAttributeKey.hfsCreatorCode.rawValue] = "HTLC".fourCharCode()
+ wrapper.fileAttributes[FileAttributeKey.hfsTypeCode.rawValue] = "HTbm".fourCharCode()
+ return wrapper
+ }
+}