summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-14 09:31:13 -0700
committerFuwn <[email protected]>2025-06-14 09:31:13 -0700
commitf2a691478225910da0afe71268127e11e5705f24 (patch)
tree0e9d0adbb822fb2c850b28e4f005343e05868382
parentfeat: Development commit (diff)
downloadsora-testing-f2a691478225910da0afe71268127e11e5705f24.tar.xz
sora-testing-f2a691478225910da0afe71268127e11e5705f24.zip
feat: Development commit
-rw-r--r--Sora/Data/Settings/SettingsBookmark.swift37
1 files changed, 34 insertions, 3 deletions
diff --git a/Sora/Data/Settings/SettingsBookmark.swift b/Sora/Data/Settings/SettingsBookmark.swift
index 41c63af..3f5099d 100644
--- a/Sora/Data/Settings/SettingsBookmark.swift
+++ b/Sora/Data/Settings/SettingsBookmark.swift
@@ -7,14 +7,45 @@ struct SettingsBookmark: Codable, Identifiable, Hashable {
let provider: BooruProvider
var folder: UUID?
var lastVisit: Date
- var visitedCount = 0
+ var visitedCount: Int
init(provider: BooruProvider, tags: [String], folder: UUID? = nil, id: UUID = UUID()) {
- createdAt = Date()
- lastVisit = Date()
+ self.createdAt = Date()
+ self.lastVisit = Date()
self.id = id
self.tags = tags
self.provider = provider
self.folder = folder
+ self.visitedCount = 0
+ }
+
+ enum CodingKeys: String, CodingKey {
+ // swiftlint:disable:next explicit_enum_raw_value
+ case id, tags, createdAt, provider, folder, lastVisit, visitedCount
+ }
+
+ init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: CodingKeys.self)
+
+ self.id = try container.decodeIfPresent(UUID.self, forKey: .id) ?? UUID()
+ self.tags = try container.decodeIfPresent([String].self, forKey: .tags) ?? []
+ self.createdAt = try container.decodeIfPresent(Date.self, forKey: .createdAt) ?? Date()
+ self.provider =
+ try container.decodeIfPresent(BooruProvider.self, forKey: .provider) ?? .safebooru
+ self.folder = try container.decodeIfPresent(UUID.self, forKey: .folder)
+ self.lastVisit = try container.decodeIfPresent(Date.self, forKey: .lastVisit) ?? Date()
+ self.visitedCount = try container.decodeIfPresent(Int.self, forKey: .visitedCount) ?? 0
+ }
+
+ func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: CodingKeys.self)
+
+ try container.encode(id, forKey: .id)
+ try container.encode(tags, forKey: .tags)
+ try container.encode(createdAt, forKey: .createdAt)
+ try container.encode(provider, forKey: .provider)
+ try container.encodeIfPresent(folder, forKey: .folder)
+ try container.encode(lastVisit, forKey: .lastVisit)
+ try container.encode(visitedCount, forKey: .visitedCount)
}
}