fix: PersonalDictionaryView preview and AppGroupStore dictionary writes

Use ThemedRoot in preview instead of inaccessible ThemePalette().
Add setPersonalDictionary(_:) for let AppGroupStore bindings; use
it from PersonalDictionaryView and DictionaryLearner.

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
This commit is contained in:
Cursor Agent
2026-07-03 08:19:28 +00:00
parent 982c164e02
commit a115d90da7
3 changed files with 19 additions and 12 deletions
+1 -1
View File
@@ -144,7 +144,7 @@ final class DictionaryLearner {
if didChange { if didChange {
dictionary.version += 1 dictionary.version += 1
store.personalDictionary = dictionary store.setPersonalDictionary(dictionary)
} }
// Suppress the "did not change" path; we still return the // Suppress the "did not change" path; we still return the
// bumped-counts view so the caller can refresh a UI label. // bumped-counts view so the caller can refresh a UI label.
@@ -224,11 +224,14 @@ struct PersonalDictionaryView: View {
private func persist() { private func persist() {
dictionary.version += 1 dictionary.version += 1
store.personalDictionary = dictionary store.setPersonalDictionary(dictionary)
} }
} }
#if DEBUG
#Preview { #Preview {
PersonalDictionaryView() ThemedRoot {
.environment(\.themePalette, ThemePalette()) PersonalDictionaryView()
}
} }
#endif
+12 -8
View File
@@ -341,14 +341,18 @@ public struct AppGroupStore: @unchecked Sendable {
} }
} }
set { set {
do { setPersonalDictionary(newValue)
let data = try JSONEncoder().encode(newValue) }
defaults.set(data, forKey: Key.personalDictionary) }
} catch {
#if DEBUG public func setPersonalDictionary(_ dictionary: PersonalDictionary) {
print("⚠️ [AppGroupStore] personalDictionary encode failed: \(error)") do {
#endif let data = try JSONEncoder().encode(dictionary)
} defaults.set(data, forKey: Key.personalDictionary)
} catch {
#if DEBUG
print("⚠️ [AppGroupStore] personalDictionary encode failed: \(error)")
#endif
} }
} }