mirror of
https://github.com/yattee/yattee.git
synced 2025-08-09 20:24:06 +00:00
Add share extension, rework bookmarks model
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import Cache
|
||||
import Foundation
|
||||
import Logging
|
||||
|
||||
@@ -7,36 +6,48 @@ struct URLBookmarkModel {
|
||||
var logger = Logger(label: "stream.yattee.url-bookmark")
|
||||
|
||||
func saveBookmark(_ url: URL) {
|
||||
guard let defaults = CacheModel.shared.bookmarksDefaults else {
|
||||
logger.error("could not open bookmarks defaults")
|
||||
return
|
||||
}
|
||||
|
||||
if let bookmarkData = try? url.bookmarkData(options: bookmarkCreationOptions, includingResourceValuesForKeys: nil, relativeTo: nil) {
|
||||
try? CacheModel.shared.urlBookmarksStorage?.setObject(bookmarkData, forKey: url.absoluteString)
|
||||
defaults.set(bookmarkData, forKey: url.absoluteString)
|
||||
logger.info("saved bookmark for \(url.absoluteString)")
|
||||
} else {
|
||||
logger.error("no bookmark data for \(url.absoluteString)")
|
||||
}
|
||||
}
|
||||
|
||||
func loadBookmark(_ url: URL) -> URL? {
|
||||
logger.info("loading bookmark for \(url.absoluteString)")
|
||||
|
||||
guard let data = try? CacheModel.shared.urlBookmarksStorage?.object(forKey: url.absoluteString) else {
|
||||
logger.info("bookmark for \(url.absoluteString) not found")
|
||||
|
||||
guard let defaults = CacheModel.shared.bookmarksDefaults else {
|
||||
logger.error("could not open bookmarks defaults")
|
||||
return nil
|
||||
}
|
||||
do {
|
||||
var isStale = false
|
||||
let url = try URL(
|
||||
resolvingBookmarkData: data,
|
||||
options: bookmarkResolutionOptions,
|
||||
relativeTo: nil,
|
||||
bookmarkDataIsStale: &isStale
|
||||
)
|
||||
if isStale {
|
||||
saveBookmark(url)
|
||||
}
|
||||
logger.info("loaded bookmark for \(url.absoluteString)")
|
||||
|
||||
return url
|
||||
} catch {
|
||||
print("Error resolving bookmark:", error)
|
||||
if let data = defaults.data(forKey: url.absoluteString) {
|
||||
do {
|
||||
var isStale = false
|
||||
let url = try URL(
|
||||
resolvingBookmarkData: data,
|
||||
options: bookmarkResolutionOptions,
|
||||
relativeTo: nil,
|
||||
bookmarkDataIsStale: &isStale
|
||||
)
|
||||
if isStale {
|
||||
saveBookmark(url)
|
||||
}
|
||||
logger.info("loaded bookmark for \(url.absoluteString)")
|
||||
|
||||
return url
|
||||
} catch {
|
||||
print("Error resolving bookmark:", error)
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
logger.warning("could not find bookmark for \(url.absoluteString)")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user