summaryrefslogtreecommitdiff
path: root/Sora/Data
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-14 09:11:49 -0700
committerFuwn <[email protected]>2025-06-14 09:11:49 -0700
commitd898ce6447f8dbddc755b97b520207859a07b181 (patch)
tree01fdb9bb9bbe0350287b5577a3ad698dabaff924 /Sora/Data
parentfeat: Development commit (diff)
downloadsora-testing-d898ce6447f8dbddc755b97b520207859a07b181.tar.xz
sora-testing-d898ce6447f8dbddc755b97b520207859a07b181.zip
feat: Development commit
Diffstat (limited to 'Sora/Data')
-rw-r--r--Sora/Data/GenericItem.swift4
-rw-r--r--Sora/Data/Settings/SettingsBookmark.swift3
-rw-r--r--Sora/Data/Settings/SettingsBookmarkSort.swift5
-rw-r--r--Sora/Data/Settings/SettingsManager.swift20
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
}