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