Files
SideStore/SideStoreApp/Sources/SideStoreAppKit/Settings/AnisetteManager.swift

50 lines
1.5 KiB
Swift
Raw Normal View History

//
// AnisetteManager.swift
// SideStore
//
// Created by Joseph Mattiello on 11/16/22.
// Copyright © 2022 SideStore. All rights reserved.
//
import Foundation
2023-03-01 00:48:36 -05:00
public enum AnisetteManager {
/// User defined URL from Settings/UserDefaults
static var userURL: String? {
var urlString: String?
2023-03-01 00:48:36 -05:00
if UserDefaults.standard.textServer == false {
urlString = UserDefaults.standard.textInputAnisetteURL
2023-03-01 00:48:36 -05:00
} else {
urlString = UserDefaults.standard.customAnisetteURL
}
2023-03-01 00:48:36 -05:00
// guard let urlString = UserDefaults.standard.customAnisetteURL, !urlString.isEmpty else { return nil }
2023-03-01 00:48:36 -05:00
// Test it's a valid URL
2023-03-01 00:48:36 -05:00
if let urlString = urlString {
guard URL(string: urlString) != nil else {
2023-03-01 00:48:36 -05:00
ELOG("UserDefaults has invalid `customAnisetteURL`")
assertionFailure("UserDefaults has invalid `customAnisetteURL`")
return nil
}
}
return urlString
}
2023-03-01 00:48:36 -05:00
static var defaultURL: String {
guard let url = Bundle.main.object(forInfoDictionaryKey: "ALTAnisetteURL") as? String else {
assertionFailure("Info.plist has invalid `ALTAnisetteURL`")
abort()
}
return url
}
2023-03-01 00:48:36 -05:00
static var currentURLString: String { userURL ?? defaultURL }
// Force unwrap is safe here since we check validity before hand -- @JoeMatt
2023-03-01 00:48:36 -05:00
/// User url or default from plist if none specified
static var currentURL: URL { URL(string: currentURLString)! }
}