Skip to content

Commit 3509f0b

Browse files
Desktop: Persist document path (#3272)
* persist document path * persist data cleanup
1 parent 591096a commit 3509f0b

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

desktop/src/persist.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@ pub(crate) struct PersistentData {
66
current_document: Option<DocumentId>,
77
#[serde(skip)]
88
document_order: Option<Vec<DocumentId>>,
9-
preferences: Option<Preferences>,
109
}
1110

1211
impl PersistentData {
1312
pub(crate) fn write_document(&mut self, id: DocumentId, document: Document) {
1413
self.documents.write(id, document);
1514
if let Some(order) = &self.document_order {
16-
self.documents.force_order(order.clone());
15+
self.documents.force_order(order);
1716
}
1817
self.flush();
1918
}
@@ -171,10 +170,10 @@ impl DocumentStore {
171170
})
172171
}
173172

174-
fn force_order(&mut self, desired_order: Vec<DocumentId>) {
173+
fn force_order(&mut self, desired_order: &Vec<DocumentId>) {
175174
let mut ordered_prefix_len = 0;
176175
for id in desired_order {
177-
if let Some(offset) = self.0[ordered_prefix_len..].iter().position(|meta| meta.id == id) {
176+
if let Some(offset) = self.0[ordered_prefix_len..].iter().position(|meta| meta.id == *id) {
178177
let found_index = ordered_prefix_len + offset;
179178
if found_index != ordered_prefix_len {
180179
self.0[ordered_prefix_len..=found_index].rotate_right(1);

desktop/wrapper/src/intercept_frontend_message.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
8181
id: document_id,
8282
document: Document {
8383
name: details.name,
84-
path: None,
84+
path: details.path,
8585
content: document,
8686
is_saved: details.is_saved,
8787
},

editor/src/messages/frontend/utility_types.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::path::PathBuf;
2+
13
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
24
use crate::messages::prelude::*;
35

@@ -10,6 +12,7 @@ pub struct OpenDocument {
1012
#[derive(PartialEq, Eq, Clone, Debug, serde::Serialize, serde::Deserialize, specta::Type)]
1113
pub struct DocumentDetails {
1214
pub name: String,
15+
pub path: Option<PathBuf>,
1316
#[serde(rename = "isSaved")]
1417
pub is_saved: bool,
1518
#[serde(rename = "isAutoSaved")]

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
10501050
DocumentMessage::SavedDocument { path } => {
10511051
self.path = path;
10521052

1053+
responses.add(PortfolioMessage::AutoSaveActiveDocument);
1054+
10531055
// Update the name to match the file stem
10541056
let document_name_from_path = self.path.as_ref().and_then(|path| {
10551057
if path.extension().is_some_and(|e| e == FILE_EXTENSION) {

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
196196
document: document.serialize_document(),
197197
details: DocumentDetails {
198198
name: document.name.clone(),
199+
path: document.path.clone(),
199200
is_saved: document.is_saved(),
200201
is_auto_saved: document.is_auto_saved(),
201202
},
@@ -1054,9 +1055,10 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
10541055
self.documents.get(id).map(|document| OpenDocument {
10551056
id: *id,
10561057
details: DocumentDetails {
1057-
is_auto_saved: document.is_auto_saved(),
1058-
is_saved: document.is_saved(),
10591058
name: document.name.clone(),
1059+
path: document.path.clone(),
1060+
is_saved: document.is_saved(),
1061+
is_auto_saved: document.is_auto_saved(),
10601062
},
10611063
})
10621064
})

0 commit comments

Comments
 (0)