mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-01 16:18:11 +08:00
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:
+3
-4
@@ -236,10 +236,9 @@ impl App {
|
|||||||
self.persistent_data.write_preferences(preferences);
|
self.persistent_data.write_preferences(preferences);
|
||||||
}
|
}
|
||||||
DesktopFrontendMessage::PersistenceLoadPreferences => {
|
DesktopFrontendMessage::PersistenceLoadPreferences => {
|
||||||
if let Some(preferences) = self.persistent_data.load_preferences() {
|
let preferences = self.persistent_data.load_preferences();
|
||||||
let message = DesktopWrapperMessage::LoadPreferences { preferences };
|
let message = DesktopWrapperMessage::LoadPreferences { preferences };
|
||||||
self.dispatch_desktop_wrapper_message(message);
|
self.dispatch_desktop_wrapper_message(message);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ pub enum DesktopWrapperMessage {
|
|||||||
id: DocumentId,
|
id: DocumentId,
|
||||||
},
|
},
|
||||||
LoadPreferences {
|
LoadPreferences {
|
||||||
preferences: Preferences,
|
preferences: Option<Preferences>,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use crate::messages::prelude::*;
|
|||||||
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
|
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
|
||||||
pub enum PreferencesMessage {
|
pub enum PreferencesMessage {
|
||||||
// Management messages
|
// Management messages
|
||||||
Load { preferences: PreferencesMessageHandler },
|
Load { preferences: Option<PreferencesMessageHandler> },
|
||||||
ResetToDefaults,
|
ResetToDefaults,
|
||||||
|
|
||||||
// Per-preference messages
|
// Per-preference messages
|
||||||
|
|||||||
@@ -50,7 +50,9 @@ impl MessageHandler<PreferencesMessage, ()> for PreferencesMessageHandler {
|
|||||||
match message {
|
match message {
|
||||||
// Management messages
|
// Management messages
|
||||||
PreferencesMessage::Load { preferences } => {
|
PreferencesMessage::Load { preferences } => {
|
||||||
*self = preferences;
|
if let Some(preferences) = preferences {
|
||||||
|
*self = preferences;
|
||||||
|
}
|
||||||
|
|
||||||
responses.add(PortfolioMessage::EditorPreferences);
|
responses.add(PortfolioMessage::EditorPreferences);
|
||||||
responses.add(PortfolioMessage::UpdateVelloPreference);
|
responses.add(PortfolioMessage::UpdateVelloPreference);
|
||||||
|
|||||||
@@ -147,9 +147,7 @@ export function createPersistenceManager(editor: Editor, portfolio: PortfolioSta
|
|||||||
|
|
||||||
async function loadPreferences() {
|
async function loadPreferences() {
|
||||||
const preferences = await get<Record<string, unknown>>("preferences", graphiteStore);
|
const preferences = await get<Record<string, unknown>>("preferences", graphiteStore);
|
||||||
if (!preferences) return;
|
editor.handle.loadPreferences(preferences ? JSON.stringify(preferences) : undefined);
|
||||||
|
|
||||||
editor.handle.loadPreferences(JSON.stringify(preferences));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FRONTEND MESSAGE SUBSCRIPTIONS
|
// FRONTEND MESSAGE SUBSCRIPTIONS
|
||||||
|
|||||||
@@ -421,14 +421,18 @@ impl EditorHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen(js_name = loadPreferences)]
|
#[wasm_bindgen(js_name = loadPreferences)]
|
||||||
pub fn load_preferences(&self, preferences: String) {
|
pub fn load_preferences(&self, preferences: Option<String>) {
|
||||||
let Ok(preferences) = serde_json::from_str(&preferences) else {
|
let preferences = if let Some(preferences) = preferences {
|
||||||
log::error!("Failed to deserialize preferences");
|
let Ok(preferences) = serde_json::from_str(&preferences) else {
|
||||||
return;
|
log::error!("Failed to deserialize preferences");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
Some(preferences)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let message = PreferencesMessage::Load { preferences };
|
let message = PreferencesMessage::Load { preferences };
|
||||||
|
|
||||||
self.dispatch(message);
|
self.dispatch(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user