From c8e6431dd050c30cf4437954649e864b50b6e169 Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Tue, 23 Sep 2025 18:20:11 +0000 Subject: [PATCH 1/2] preference load message on default load --- desktop/src/app.rs | 7 +++---- desktop/wrapper/src/messages.rs | 2 +- .../messages/preferences/preferences_message.rs | 2 +- .../preferences/preferences_message_handler.rs | 4 +++- frontend/src/io-managers/persistence.ts | 4 +--- frontend/wasm/src/editor_api.rs | 14 +++++++++----- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/desktop/src/app.rs b/desktop/src/app.rs index 6d2ce497f3..7689d93fc9 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -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); } } } diff --git a/desktop/wrapper/src/messages.rs b/desktop/wrapper/src/messages.rs index fd561626fb..eb55de3239 100644 --- a/desktop/wrapper/src/messages.rs +++ b/desktop/wrapper/src/messages.rs @@ -103,7 +103,7 @@ pub enum DesktopWrapperMessage { id: DocumentId, }, LoadPreferences { - preferences: Preferences, + preferences: Option, }, } diff --git a/editor/src/messages/preferences/preferences_message.rs b/editor/src/messages/preferences/preferences_message.rs index 00a6eca5d5..c0dc72382c 100644 --- a/editor/src/messages/preferences/preferences_message.rs +++ b/editor/src/messages/preferences/preferences_message.rs @@ -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 }, ResetToDefaults, // Per-preference messages diff --git a/editor/src/messages/preferences/preferences_message_handler.rs b/editor/src/messages/preferences/preferences_message_handler.rs index d05829387c..8c61fa78af 100644 --- a/editor/src/messages/preferences/preferences_message_handler.rs +++ b/editor/src/messages/preferences/preferences_message_handler.rs @@ -50,7 +50,9 @@ impl MessageHandler 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); diff --git a/frontend/src/io-managers/persistence.ts b/frontend/src/io-managers/persistence.ts index 44af91d317..6414b0cd5d 100644 --- a/frontend/src/io-managers/persistence.ts +++ b/frontend/src/io-managers/persistence.ts @@ -147,9 +147,7 @@ export function createPersistenceManager(editor: Editor, portfolio: PortfolioSta async function loadPreferences() { const preferences = await get>("preferences", graphiteStore); - if (!preferences) return; - - editor.handle.loadPreferences(JSON.stringify(preferences)); + editor.handle.loadPreferences(preferences ? JSON.stringify(preferences) : null); } // FRONTEND MESSAGE SUBSCRIPTIONS diff --git a/frontend/wasm/src/editor_api.rs b/frontend/wasm/src/editor_api.rs index 24a76910ea..b46b27f6ac 100644 --- a/frontend/wasm/src/editor_api.rs +++ b/frontend/wasm/src/editor_api.rs @@ -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) { + 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); } From fd1c67d2ce0ee0cdccf818d792937510a976836a Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Tue, 23 Sep 2025 18:20:11 +0000 Subject: [PATCH 2/2] review fixup --- frontend/src/io-managers/persistence.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/io-managers/persistence.ts b/frontend/src/io-managers/persistence.ts index 6414b0cd5d..4ce45933f2 100644 --- a/frontend/src/io-managers/persistence.ts +++ b/frontend/src/io-managers/persistence.ts @@ -147,7 +147,7 @@ export function createPersistenceManager(editor: Editor, portfolio: PortfolioSta async function loadPreferences() { const preferences = await get>("preferences", graphiteStore); - editor.handle.loadPreferences(preferences ? JSON.stringify(preferences) : null); + editor.handle.loadPreferences(preferences ? JSON.stringify(preferences) : undefined); } // FRONTEND MESSAGE SUBSCRIPTIONS