Ensure the LoadPreferences message is dispatched with None when no preferences exist (#3198)

* preference load message on default load

* review fixup
This commit is contained in:
Timon 2025-09-23 20:19:16 +00:00 committed by GitHub
parent 21f34ab19a
commit d15f63f4fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 18 additions and 15 deletions

View File

@ -236,10 +236,9 @@ impl App {
self.persistent_data.write_preferences(preferences);
}
DesktopFrontendMessage::PersistenceLoadPreferences => {
if let Some(preferences) = self.persistent_data.load_preferences() {
let message = DesktopWrapperMessage::LoadPreferences { preferences };
self.dispatch_desktop_wrapper_message(message);
}
let preferences = self.persistent_data.load_preferences();
let message = DesktopWrapperMessage::LoadPreferences { preferences };
self.dispatch_desktop_wrapper_message(message);
}
}
}

View File

@ -103,7 +103,7 @@ pub enum DesktopWrapperMessage {
id: DocumentId,
},
LoadPreferences {
preferences: Preferences,
preferences: Option<Preferences>,
},
}

View File

@ -6,7 +6,7 @@ use crate::messages::prelude::*;
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub enum PreferencesMessage {
// Management messages
Load { preferences: PreferencesMessageHandler },
Load { preferences: Option<PreferencesMessageHandler> },
ResetToDefaults,
// Per-preference messages

View File

@ -50,7 +50,9 @@ impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
match message {
// Management messages
PreferencesMessage::Load { preferences } => {
*self = preferences;
if let Some(preferences) = preferences {
*self = preferences;
}
responses.add(PortfolioMessage::EditorPreferences);
responses.add(PortfolioMessage::UpdateVelloPreference);

View File

@ -147,9 +147,7 @@ export function createPersistenceManager(editor: Editor, portfolio: PortfolioSta
async function loadPreferences() {
const preferences = await get<Record<string, unknown>>("preferences", graphiteStore);
if (!preferences) return;
editor.handle.loadPreferences(JSON.stringify(preferences));
editor.handle.loadPreferences(preferences ? JSON.stringify(preferences) : undefined);
}
// FRONTEND MESSAGE SUBSCRIPTIONS

View File

@ -421,14 +421,18 @@ impl EditorHandle {
}
#[wasm_bindgen(js_name = loadPreferences)]
pub fn load_preferences(&self, preferences: String) {
let Ok(preferences) = serde_json::from_str(&preferences) else {
log::error!("Failed to deserialize preferences");
return;
pub fn load_preferences(&self, preferences: Option<String>) {
let preferences = if let Some(preferences) = preferences {
let Ok(preferences) = serde_json::from_str(&preferences) else {
log::error!("Failed to deserialize preferences");
return;
};
Some(preferences)
} else {
None
};
let message = PreferencesMessage::Load { preferences };
self.dispatch(message);
}