experiments

This commit is contained in:
eevee
2025-06-18 00:51:01 +03:00
parent 92e6cc7900
commit a994490604
36 changed files with 264 additions and 64 deletions
@@ -1,9 +1,8 @@
import Foundation
extension UserDefaults {
private static let defaults = UserDefaults.standard
static var container: UserDefaults = .standard
private static let lyricsSourceKey = "lyricsSource"
private static let musixmatchTokenKey = "musixmatchToken"
private static let darkPopUpsKey = "darkPopUps"
private static let patchTypeKey = "patchType"
@@ -12,103 +11,52 @@ extension UserDefaults {
private static let lyricsOptionsKey = "lyricsOptions"
private static let hasShownCommonIssuesTipKey = "hasShownCommonIssuesTip"
static var lyricsSource: LyricsSource {
get {
if let rawValue = defaults.object(forKey: lyricsSourceKey) as? Int {
return LyricsSource(rawValue: rawValue)!
}
return LyricsSource.defaultSource
}
set (newSource) {
defaults.set(newSource.rawValue, forKey: lyricsSourceKey)
}
}
static var musixmatchToken: String {
get {
defaults.string(forKey: musixmatchTokenKey) ?? ""
container.string(forKey: musixmatchTokenKey) ?? ""
}
set (token) {
defaults.set(token, forKey: musixmatchTokenKey)
}
}
static var lyricsOptions: LyricsOptions {
get {
if let data = defaults.object(forKey: lyricsOptionsKey) as? Data,
let lyricsOptions = try? JSONDecoder().decode(LyricsOptions.self, from: data) {
return lyricsOptions
}
return LyricsOptions(
romanization: false,
musixmatchLanguage: Locale.current.languageCode ?? "",
lrclibUrl: LrclibLyricsRepository.originalApiUrl,
geniusFallback: true,
showFallbackReasons: true
)
}
set (lyricsOptions) {
defaults.set(try! JSONEncoder().encode(lyricsOptions), forKey: lyricsOptionsKey)
container.set(token, forKey: musixmatchTokenKey)
}
}
static var darkPopUps: Bool {
get {
defaults.object(forKey: darkPopUpsKey) as? Bool ?? true
container.object(forKey: darkPopUpsKey) as? Bool ?? true
}
set (darkPopUps) {
defaults.set(darkPopUps, forKey: darkPopUpsKey)
container.set(darkPopUps, forKey: darkPopUpsKey)
}
}
static var patchType: PatchType {
get {
if let rawValue = defaults.object(forKey: patchTypeKey) as? Int {
if let rawValue = container.object(forKey: patchTypeKey) as? Int {
return PatchType(rawValue: rawValue) ?? .requests
}
return .notSet
}
set (patchType) {
defaults.set(patchType.rawValue, forKey: patchTypeKey)
container.set(patchType.rawValue, forKey: patchTypeKey)
}
}
static var overwriteConfiguration: Bool {
get {
defaults.bool(forKey: overwriteConfigurationKey)
container.bool(forKey: overwriteConfigurationKey)
}
set (overwriteConfiguration) {
defaults.set(overwriteConfiguration, forKey: overwriteConfigurationKey)
container.set(overwriteConfiguration, forKey: overwriteConfigurationKey)
}
}
static var hasShownCommonIssuesTip: Bool {
get {
defaults.bool(forKey: hasShownCommonIssuesTipKey)
container.bool(forKey: hasShownCommonIssuesTipKey)
}
set (hasShownCommonIssuesTip) {
defaults.set(hasShownCommonIssuesTip, forKey: hasShownCommonIssuesTipKey)
}
}
static var lyricsColors: LyricsColorsSettings {
get {
if let data = defaults.object(forKey: lyricsColorsKey) as? Data {
return try! JSONDecoder().decode(LyricsColorsSettings.self, from: data)
}
return LyricsColorsSettings(
displayOriginalColors: true,
useStaticColor: false,
staticColor: "",
normalizationFactor: 0.5
)
}
set (lyricsColors) {
defaults.set(try! JSONEncoder().encode(lyricsColors), forKey: lyricsColorsKey)
container.set(hasShownCommonIssuesTip, forKey: hasShownCommonIssuesTipKey)
}
}
}