summaryrefslogtreecommitdiff
path: root/Sora/Data
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-25 21:14:13 -0800
committerFuwn <[email protected]>2025-02-25 21:14:13 -0800
commit5c9d5f5f9e39fb669921889b453fbb4e46b48bec (patch)
tree0be7551f15774000ce1efda52efe94b58f38985c /Sora/Data
parentfeat: Development commit (diff)
downloadsora-testing-5c9d5f5f9e39fb669921889b453fbb4e46b48bec.tar.xz
sora-testing-5c9d5f5f9e39fb669921889b453fbb4e46b48bec.zip
feat: Development commit
Diffstat (limited to 'Sora/Data')
-rw-r--r--Sora/Data/Booru/BooruManager.swift37
-rw-r--r--Sora/Data/Booru/BooruProviderFlavor.swift14
2 files changed, 38 insertions, 13 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift
index 7e27730..c64d7e5 100644
--- a/Sora/Data/Booru/BooruManager.swift
+++ b/Sora/Data/Booru/BooruManager.swift
@@ -10,6 +10,8 @@ class BooruManager: ObservableObject {
@Published var endOfData = false
@Published var cacheSize: String?
@Published var selectedPost: BooruPost?
+ @Published var flavor: BooruProviderFlavor
+ @Published var domain: String
private var currentTask: Task<Void, Never>?
let provider: BooruProvider
var tags: [String] {
@@ -36,6 +38,24 @@ class BooruManager: ObservableObject {
init(_ provider: BooruProvider) {
self.provider = provider
+ self.flavor = BooruProviderFlavor(provider: provider)
+
+ switch provider {
+ case .yandere:
+ domain = "yande.re"
+
+ case .konachan:
+ domain = "konachan.com"
+
+ case .sakugabooru:
+ domain = "sakugabooru.com"
+
+ case .safebooru:
+ domain = "safebooru.org"
+
+ case .gelbooru:
+ domain = "gelbooru.com"
+ }
}
func initializeTags() {
@@ -153,21 +173,12 @@ class BooruManager: ObservableObject {
private func urlForPosts(page: Int, limit: Int, tags: [String]) -> URL? {
let tagString = tags.joined(separator: "+")
- switch provider {
- case .yandere:
- return moebooruURL(domain: "yande.re", page: page, limit: limit, tagString: tagString)
-
- case .konachan:
- return moebooruURL(domain: "konachan.com", page: page, limit: limit, tagString: tagString)
-
- case .sakugabooru:
- return moebooruURL(domain: "sakugabooru.com", page: page, limit: limit, tagString: tagString)
-
- case .safebooru:
- return gelbooruURL(domain: "safebooru.org", page: page, limit: limit, tagString: tagString)
+ switch flavor {
+ case .moebooru:
+ return moebooruURL(domain: domain, page: page, limit: limit, tagString: tagString)
case .gelbooru:
- return gelbooruURL(domain: "gelbooru.com", page: page, limit: limit, tagString: tagString)
+ return gelbooruURL(domain: domain, page: page, limit: limit, tagString: tagString)
}
}
diff --git a/Sora/Data/Booru/BooruProviderFlavor.swift b/Sora/Data/Booru/BooruProviderFlavor.swift
new file mode 100644
index 0000000..69e3d1c
--- /dev/null
+++ b/Sora/Data/Booru/BooruProviderFlavor.swift
@@ -0,0 +1,14 @@
+enum BooruProviderFlavor: String, CaseIterable, Decodable, Encodable {
+ case gelbooru = "Gelbooru"
+ case moebooru = "Moebooru"
+
+ init(provider: BooruProvider) {
+ switch provider {
+ case .yandere, .konachan, .sakugabooru:
+ self = .moebooru
+
+ case .safebooru, .gelbooru:
+ self = .gelbooru
+ }
+ }
+}