Skip to content

Commit 15d905d

Browse files
committed
refactor: extract WelcomeViewModel and split WelcomeWindowView into focused files
1 parent 7973020 commit 15d905d

File tree

7 files changed

+1084
-948
lines changed

7 files changed

+1084
-948
lines changed

TablePro/Core/Storage/GroupStorage.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,28 @@ final class GroupStorage {
1515
private let defaults = UserDefaults.standard
1616
private let encoder = JSONEncoder()
1717
private let decoder = JSONDecoder()
18+
private var cachedGroups: [ConnectionGroup]?
1819

1920
private init() {}
2021

2122
// MARK: - Group CRUD
2223

2324
/// Load all groups
2425
func loadGroups() -> [ConnectionGroup] {
26+
if let cached = cachedGroups { return cached }
27+
2528
guard let data = defaults.data(forKey: groupsKey) else {
29+
cachedGroups = []
2630
return []
2731
}
2832

2933
do {
30-
return try decoder.decode([ConnectionGroup].self, from: data)
34+
let groups = try decoder.decode([ConnectionGroup].self, from: data)
35+
cachedGroups = groups
36+
return groups
3137
} catch {
3238
Self.logger.error("Failed to load groups: \(error)")
39+
cachedGroups = []
3340
return []
3441
}
3542
}
@@ -39,6 +46,7 @@ final class GroupStorage {
3946
do {
4047
let data = try encoder.encode(groups)
4148
defaults.set(data, forKey: groupsKey)
49+
cachedGroups = nil
4250
SyncChangeTracker.shared.markDirty(.group, ids: groups.map { $0.id.uuidString })
4351
} catch {
4452
Self.logger.error("Failed to save groups: \(error)")

TablePro/Core/Storage/TagStorage.swift

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ final class TagStorage {
1717
private let defaults = UserDefaults.standard
1818
private let encoder = JSONEncoder()
1919
private let decoder = JSONDecoder()
20+
private var cachedTags: [ConnectionTag]?
2021

2122
private init() {
2223
// Initialize with presets on first launch
@@ -29,16 +30,23 @@ final class TagStorage {
2930

3031
/// Load all tags (presets + custom)
3132
func loadTags() -> [ConnectionTag] {
33+
if let cached = cachedTags { return cached }
34+
3235
guard let data = defaults.data(forKey: tagsKey) else {
33-
return ConnectionTag.presets
36+
let tags = ConnectionTag.presets
37+
cachedTags = tags
38+
return tags
3439
}
3540

3641
do {
3742
let tags = try decoder.decode([ConnectionTag].self, from: data)
43+
cachedTags = tags
3844
return tags
3945
} catch {
4046
Self.logger.error("Failed to load tags: \(error)")
41-
return ConnectionTag.presets
47+
let tags = ConnectionTag.presets
48+
cachedTags = tags
49+
return tags
4250
}
4351
}
4452

@@ -47,6 +55,7 @@ final class TagStorage {
4755
do {
4856
let data = try encoder.encode(tags)
4957
defaults.set(data, forKey: tagsKey)
58+
cachedTags = nil
5059
SyncChangeTracker.shared.markDirty(.tag, ids: tags.map { $0.id.uuidString })
5160
} catch {
5261
Self.logger.error("Failed to save tags: \(error)")

0 commit comments

Comments
 (0)