Skip to content

Commit 39dc85a

Browse files
Review
1 parent 629238a commit 39dc85a

File tree

5 files changed

+22
-27
lines changed

5 files changed

+22
-27
lines changed

desktop/src/app.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ impl App {
288288
DesktopFrontendMessage::PersistenceReadDocument { id } => {
289289
if let Some(document_serialized_content) = persist::read_document_content(&id) {
290290
responses.push(DesktopWrapperMessage::LoadDocumentContent { id, document_serialized_content });
291+
} else {
292+
tracing::error!("Failed to read document content for {id:?}");
291293
}
292294
}
293295
DesktopFrontendMessage::PersistenceWriteDocument { id, document_serialized_content } => {

desktop/src/persist.rs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@ pub(crate) fn read_state() -> PersistedState {
2626
}
2727

2828
pub(crate) fn write_state(state: PersistedState) {
29-
flush(&state);
30-
garbage_collect_document_files(&state);
29+
let state: &PersistedState = &state;
30+
let data = match ron::ser::to_string_pretty(state, Default::default()) {
31+
Ok(d) => d,
32+
Err(e) => {
33+
tracing::error!("Failed to serialize persistent data: {e}");
34+
return;
35+
}
36+
};
37+
if let Err(e) = std::fs::write(state_file_path(), data) {
38+
tracing::error!("Failed to write persistent data to disk: {e}");
39+
}
3140
}
3241

3342
pub(crate) fn write_document_content(id: DocumentId, document_content: String) {
@@ -46,19 +55,6 @@ pub(crate) fn delete_document(id: &DocumentId) {
4655
}
4756
}
4857

49-
fn flush(state: &PersistedState) {
50-
let data = match ron::ser::to_string_pretty(state, Default::default()) {
51-
Ok(d) => d,
52-
Err(e) => {
53-
tracing::error!("Failed to serialize persistent data: {e}");
54-
return;
55-
}
56-
};
57-
if let Err(e) = std::fs::write(state_file_path(), data) {
58-
tracing::error!("Failed to write persistent data to disk: {e}");
59-
}
60-
}
61-
6258
fn garbage_collect_document_files(state: &PersistedState) {
6359
let valid_paths: std::collections::HashSet<_> = state.documents.iter().map(|doc| document_content_path(&doc.id)).collect();
6460

editor/src/messages/portfolio/persistent_state/persistent_state_message_handler.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ impl MessageHandler<PersistentStateMessage, PersistentStateMessageContext> for P
2727
}
2828
PersistentStateMessage::WriteDocument { document_id, document } => {
2929
responses.add(FrontendMessage::TriggerPersistenceWriteDocument { document_id, document });
30-
responses.add(FrontendMessage::TriggerPersistenceWriteState { state });
3130
}
3231
PersistentStateMessage::DeleteDocument { document_id } => {
3332
responses.add(FrontendMessage::TriggerPersistenceDeleteDocument { document_id });
34-
responses.add(FrontendMessage::TriggerPersistenceWriteState { state });
3533
}
3634
}
3735
}

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,19 +174,17 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
174174
}
175175
}
176176
PortfolioMessage::AutoSaveAllDocuments => {
177-
for document_id in self.document_ids.iter().copied().collect::<Vec<_>>() {
178-
if let Some(document) = self.documents.get_mut(&document_id)
177+
for document_id in self.document_ids.iter() {
178+
if let Some(document) = self.documents.get_mut(document_id)
179179
&& !document.is_auto_saved()
180180
{
181181
document.set_auto_save_state(true);
182-
responses.add(PortfolioMessage::AutoSaveDocument { document_id });
182+
responses.add(PortfolioMessage::AutoSaveDocument { document_id: *document_id });
183183
}
184184
}
185185
}
186186
PortfolioMessage::AutoSaveDocument { document_id } => {
187-
let Some(document) = self.document(document_id) else {
188-
return;
189-
};
187+
let Some(document) = self.document(document_id) else { return };
190188
responses.add(PersistentStateMessage::WriteDocument {
191189
document_id,
192190
document: document.serialize_document(),
@@ -367,6 +365,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
367365
self.document_ids.clear();
368366
self.active_document_id = None;
369367
responses.add(MenuBarMessage::SendLayout);
368+
responses.add(PersistentStateMessage::WriteState);
370369
}
371370
PortfolioMessage::FontCatalogLoaded { catalog } => {
372371
self.cached_data.font_catalog = catalog;

editor/src/test_utils.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ impl EditorTestUtils {
3636
async fn run<'a>(editor: &'a mut Editor, runtime: &'a mut NodeRuntime) -> Result<Instrumented, String> {
3737
let portfolio = &mut editor.dispatcher.message_handlers.portfolio_message_handler;
3838
let document_id = portfolio.active_document_id.unwrap();
39-
let exector = &mut portfolio.executor;
40-
let document = portfolio.document_mut(document_id).unwrap();
39+
let (executor, documents) = (&mut portfolio.executor, &mut portfolio.documents);
40+
let document = documents.get_mut(&document_id).unwrap();
4141

42-
let instrumented = match exector.update_node_graph_instrumented(document) {
42+
let instrumented = match executor.update_node_graph_instrumented(document) {
4343
Ok(instrumented) => instrumented,
4444
Err(e) => return Err(format!("update_node_graph_instrumented failed\n\n{e}")),
4545
};
4646

47-
if let Err(e) = exector.submit_current_node_graph_evaluation(document, document_id, UVec2::ONE, 1., Default::default(), DVec2::ZERO) {
47+
if let Err(e) = executor.submit_current_node_graph_evaluation(document, document_id, UVec2::ONE, 1., Default::default(), DVec2::ZERO) {
4848
return Err(format!("submit_current_node_graph_evaluation failed\n\n{e}"));
4949
}
5050
runtime.run().await;

0 commit comments

Comments
 (0)