diff options
Diffstat (limited to 'Sora/Data')
| -rw-r--r-- | Sora/Data/Booru/Provider/BooruProvider.swift | 10 | ||||
| -rw-r--r-- | Sora/Data/Booru/Provider/BooruProviderCustom.swift | 6 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 22 |
3 files changed, 30 insertions, 8 deletions
diff --git a/Sora/Data/Booru/Provider/BooruProvider.swift b/Sora/Data/Booru/Provider/BooruProvider.swift index 84b76c8..49bf18a 100644 --- a/Sora/Data/Booru/Provider/BooruProvider.swift +++ b/Sora/Data/Booru/Provider/BooruProvider.swift @@ -9,7 +9,13 @@ enum BooruProvider: CaseIterable, Codable, Hashable, Equatable { // MARK: - Computed Properties var domain: String { - Self.domains[self] ?? rawValue.lowercased() + switch self { + case .custom(let provider): + provider.self.domain + + default: + Self.domains[self] ?? rawValue.lowercased() + } } var asFileNameComponent: String { @@ -45,7 +51,7 @@ enum BooruProvider: CaseIterable, Codable, Hashable, Equatable { "yande.re" case .custom(let provider): - provider.baseURL + provider.domain } } diff --git a/Sora/Data/Booru/Provider/BooruProviderCustom.swift b/Sora/Data/Booru/Provider/BooruProviderCustom.swift index a2be323..7d8cc28 100644 --- a/Sora/Data/Booru/Provider/BooruProviderCustom.swift +++ b/Sora/Data/Booru/Provider/BooruProviderCustom.swift @@ -2,12 +2,12 @@ import Foundation struct BooruProviderCustom: Identifiable, Codable, Hashable { let id: UUID - var baseURL: String + var domain: String var flavor: BooruProviderFlavor - init(baseURL: String, flavor: BooruProviderFlavor, id: UUID = UUID()) { + init(domain: String, flavor: BooruProviderFlavor, id: UUID = UUID()) { self.id = id - self.baseURL = baseURL + self.domain = domain self.flavor = flavor } } diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index f4273ef..984ffbe 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -14,9 +14,6 @@ class SettingsManager: ObservableObject { @AppStorage("thumbnailGridColumns") var thumbnailGridColumns = 2 - @AppStorage("preferredBooru") - var preferredBooruData = Data() - @AppStorage("enableShareShortcut") var enableShareShortcut = false @@ -44,6 +41,12 @@ class SettingsManager: ObservableObject { @AppStorage("searchHistory") private var searchHistoryData = Data() + @AppStorage("preferredBooru") + private var preferredBooruData = Data() + + @AppStorage("customProviders") + private var customProvidersData = Data() + // MARK: - Computed Properties var bookmarks: [SettingsBookmark] { get { @@ -85,6 +88,19 @@ class SettingsManager: ObservableObject { set { preferredBooruData = Self.encode(newValue) ?? preferredBooruData } } + var customProviders: [BooruProviderCustom] { + get { + Self.decode( + [BooruProviderCustom].self, + from: customProvidersData + ) ?? [] + } + + set { + customProvidersData = Self.encode(newValue) ?? customProvidersData + } + } + // MARK: - Private Helpers private static func encode<T: Encodable>(_ value: T) -> Data? { try? JSONEncoder().encode(value) |