persist document path

This commit is contained in:
Timon Schelling
2025-10-10 22:49:16 +00:00
parent 5df3196b58
commit de6f0463a2
4 changed files with 10 additions and 3 deletions

View File

@@ -81,7 +81,7 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
id: document_id,
document: Document {
name: details.name,
path: None,
path: details.path,
content: document,
is_saved: details.is_saved,
},

View File

@@ -1,3 +1,5 @@
use std::path::PathBuf;
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
use crate::messages::prelude::*;
@@ -10,6 +12,7 @@ pub struct OpenDocument {
#[derive(PartialEq, Eq, Clone, Debug, serde::Serialize, serde::Deserialize, specta::Type)]
pub struct DocumentDetails {
pub name: String,
pub path: Option<PathBuf>,
#[serde(rename = "isSaved")]
pub is_saved: bool,
#[serde(rename = "isAutoSaved")]

View File

@@ -1047,6 +1047,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
DocumentMessage::SavedDocument { path } => {
self.path = path;
responses.add(PortfolioMessage::AutoSaveActiveDocument);
// Update the name to match the file stem
let document_name_from_path = self.path.as_ref().and_then(|path| {
if path.extension().is_some_and(|e| e == FILE_EXTENSION) {

View File

@@ -194,6 +194,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
document: document.serialize_document(),
details: DocumentDetails {
name: document.name.clone(),
path: document.path.clone(),
is_saved: document.is_saved(),
is_auto_saved: document.is_auto_saved(),
},
@@ -1052,9 +1053,10 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
self.documents.get(id).map(|document| OpenDocument {
id: *id,
details: DocumentDetails {
is_auto_saved: document.is_auto_saved(),
is_saved: document.is_saved(),
name: document.name.clone(),
path: document.path.clone(),
is_saved: document.is_saved(),
is_auto_saved: document.is_auto_saved(),
},
})
})