From 5c9d5f5f9e39fb669921889b453fbb4e46b48bec Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 25 Feb 2025 21:14:13 -0800 Subject: feat: Development commit --- Sora/Data/Booru/BooruManager.swift | 37 ++++++++++++++++++++----------- Sora/Data/Booru/BooruProviderFlavor.swift | 14 ++++++++++++ 2 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 Sora/Data/Booru/BooruProviderFlavor.swift (limited to 'Sora/Data') 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? 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 + } + } +} -- cgit v1.2.3