-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPresetStorage.swift
96 lines (87 loc) ยท 3.12 KB
/
PresetStorage.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//
// PresetStorage.swift
// Blankie
//
// Created by Cody Bromley on 1/5/25.
//
import Foundation
struct PresetStorage {
private static let defaults = UserDefaults.standard
static let defaultPresetKey = "defaultPreset"
static let customPresetsKey = "savedPresets"
static let lastActivePresetIDKey = "lastActivePresetID"
static func saveDefaultPreset(_ preset: Preset) {
print("๐พ PresetStorage: Saving default preset")
if let data = try? JSONEncoder().encode(preset) {
defaults.set(data, forKey: defaultPresetKey)
print("๐พ PresetStorage: Default preset saved successfully")
} else {
print("โ PresetStorage: Failed to save default preset")
}
}
static func loadDefaultPreset() -> Preset? {
print("๐พ PresetStorage: Loading default preset")
guard let data = defaults.data(forKey: defaultPresetKey),
let preset = try? JSONDecoder().decode(Preset.self, from: data)
else {
print("๐พ PresetStorage: No default preset found")
return nil
}
print("๐พ PresetStorage: Default preset loaded successfully")
return preset
}
static func saveCustomPresets(_ presets: [Preset]) {
print("๐พ PresetStorage: Saving \(presets.count) custom presets")
if let data = try? JSONEncoder().encode(presets) {
// Add debug logging before saving
print("Saving presets:")
presets.forEach { preset in
print(" - '\(preset.name)':")
print(" * Active sounds:")
preset.soundStates
.filter { $0.isSelected }
.forEach { state in
print(" - \(state.fileName) (Volume: \(state.volume))")
}
}
UserDefaults.standard.set(data, forKey: customPresetsKey)
print("๐พ PresetStorage: Custom presets saved successfully")
}
}
static func loadCustomPresets() -> [Preset] {
print("๐พ PresetStorage: Loading custom presets")
if let data = UserDefaults.standard.data(forKey: customPresetsKey),
let presets = try? JSONDecoder().decode([Preset].self, from: data)
{
print("๐พ PresetStorage: Loaded \(presets.count) custom presets")
// Add debug logging
presets.forEach { preset in
print(" - Loaded preset '\(preset.name)':")
print(" * Active sounds:")
preset.soundStates
.filter { $0.isSelected }
.forEach { state in
print(" - \(state.fileName) (Volume: \(state.volume))")
}
}
return presets
}
print("๐พ PresetStorage: No custom presets found")
return []
}
static func saveLastActivePresetID(_ id: UUID) {
print("๐พ PresetStorage: Saving last active preset ID: \(id)")
defaults.set(id.uuidString, forKey: lastActivePresetIDKey)
}
static func loadLastActivePresetID() -> UUID? {
print("๐พ PresetStorage: Loading last active preset ID")
guard let idString = defaults.string(forKey: lastActivePresetIDKey),
let id = UUID(uuidString: idString)
else {
print("๐พ PresetStorage: No last active preset ID found")
return nil
}
print("๐พ PresetStorage: Last active preset ID loaded: \(id)")
return id
}
}