From d898ce6447f8dbddc755b97b520207859a07b181 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 14 Jun 2025 09:11:49 -0700 Subject: feat: Development commit --- Sora/Data/Settings/SettingsBookmark.swift | 3 +++ Sora/Data/Settings/SettingsBookmarkSort.swift | 5 +++++ Sora/Data/Settings/SettingsManager.swift | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 Sora/Data/Settings/SettingsBookmarkSort.swift (limited to 'Sora/Data/Settings') diff --git a/Sora/Data/Settings/SettingsBookmark.swift b/Sora/Data/Settings/SettingsBookmark.swift index 34b87f4..41c63af 100644 --- a/Sora/Data/Settings/SettingsBookmark.swift +++ b/Sora/Data/Settings/SettingsBookmark.swift @@ -6,9 +6,12 @@ struct SettingsBookmark: Codable, Identifiable, Hashable { let createdAt: Date let provider: BooruProvider var folder: UUID? + var lastVisit: Date + var visitedCount = 0 init(provider: BooruProvider, tags: [String], folder: UUID? = nil, id: UUID = UUID()) { createdAt = Date() + lastVisit = Date() self.id = id self.tags = tags self.provider = provider diff --git a/Sora/Data/Settings/SettingsBookmarkSort.swift b/Sora/Data/Settings/SettingsBookmarkSort.swift new file mode 100644 index 0000000..290aa8d --- /dev/null +++ b/Sora/Data/Settings/SettingsBookmarkSort.swift @@ -0,0 +1,5 @@ +enum SettingsBookmarkSort: String, CaseIterable { + case dateBookmarked = "Date Bookmarked" + case lastVisited = "Last Visited" + case visitedCount = "Visited Count" +} diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 1d6e2b8..0b5af21 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -393,6 +393,26 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l self.syncToCloud() } + func updateBookmarkLastVisit(withID id: UUID, date: Date = Date()) { + guard let index = bookmarks.firstIndex(of: bookmarks.first(where: { $0.id == id })!) else { + return + } + + bookmarks[index].lastVisit = date + + self.syncToCloud() + } + + func incrementBookmarkVisitCount(withID id: UUID) { + guard let index = bookmarks.firstIndex(of: bookmarks.first(where: { $0.id == id })!) else { + return + } + + bookmarks[index].visitedCount += 1 + + self.syncToCloud() + } + func folderName(forID id: UUID) -> String? { folders.first { $0.id == id }?.name } -- cgit v1.2.3