Mountain/Environment/DocumentProvider/
ApplyChanges.rs1use CommonLibrary::Error::CommonError::CommonError;
7use serde_json::Value;
8use url::Url;
9
10use crate::{Environment::Utility, dev_log};
11
12pub(super) async fn apply_document_changes(
14 environment:&crate::Environment::MountainEnvironment::MountainEnvironment,
15 uri:Url,
16 new_version_identifier:i64,
17 changes_dto_collection:Value,
18 _is_dirty_after_change:bool,
19 _is_undoing:bool,
20 _is_redoing:bool,
21) -> Result<(), CommonError> {
22 dev_log!("model", "[DocumentProvider] Applying changes to document: {}", uri);
23
24 {
25 let mut open_documents_guard = environment
26 .ApplicationState
27 .Feature
28 .Documents
29 .OpenDocuments
30 .lock()
31 .map_err(Utility::MapApplicationStateLockErrorToCommonError)?;
32
33 if let Some(document) = open_documents_guard.get_mut(uri.as_str()) {
34 document.ApplyChanges(new_version_identifier, &changes_dto_collection)?;
35 } else {
36 dev_log!(
37 "model",
38 "warn: [DocumentProvider] Received changes for unknown document: {}",
39 uri
40 );
41
42 return Ok(());
43 }
44 }
45
46 super::Notifications::notify_model_changed(environment, &uri, new_version_identifier, changes_dto_collection).await;
47
48 Ok(())
49}