diff options
| author | Fuwn <[email protected]> | 2025-06-14 09:11:49 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-14 09:11:49 -0700 |
| commit | d898ce6447f8dbddc755b97b520207859a07b181 (patch) | |
| tree | 01fdb9bb9bbe0350287b5577a3ad698dabaff924 /Sora/Data | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-d898ce6447f8dbddc755b97b520207859a07b181.tar.xz sora-testing-d898ce6447f8dbddc755b97b520207859a07b181.zip | |
feat: Development commit
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 } |