diff options
Diffstat (limited to 'Sora/Data')
| -rw-r--r-- | Sora/Data/GenericItem.swift | 4 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsBookmark.swift | 3 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsBookmarkSort.swift | 5 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 20 |
4 files changed, 32 insertions, 0 deletions
diff --git a/Sora/Data/GenericItem.swift b/Sora/Data/GenericItem.swift index 6b06d02..7881a00 100644 --- a/Sora/Data/GenericItem.swift +++ b/Sora/Data/GenericItem.swift @@ -6,11 +6,15 @@ protocol GenericItem { var provider: BooruProvider { get } var date: Date { get } var folder: UUID? { get } + var lastVisit: Date { get } + var visitedCount: Int { get } } extension BooruSearchQuery: GenericItem { var date: Date { searchedAt } var folder: UUID? { nil } + var visitedCount: Int { 0 } + var lastVisit: Date { searchedAt } } extension SettingsBookmark: GenericItem { 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 } |