Implement sidebar tree view state persistence
This commit is contained in:
@@ -4330,8 +4330,8 @@ fn add_local_tree_command_affected_parents(result: &Value, action: &str) -> Vec<
|
||||
"old-parent",
|
||||
);
|
||||
}
|
||||
if let Some(parent_path) = local_tree_result_string(result, "parentRelativePath") {
|
||||
push_local_tree_affected_parent(&mut parents, &mut seen, parent_path, "parent");
|
||||
if let Some(parent_path) = result.get("parentRelativePath").and_then(Value::as_str) {
|
||||
push_local_tree_affected_parent(&mut parents, &mut seen, parent_path.to_string(), "parent");
|
||||
}
|
||||
if normalized_action != "delete"
|
||||
&& normalized_action != "trash"
|
||||
@@ -4607,6 +4607,7 @@ fn create_local_markdown_page(
|
||||
let stem = determine_page_stem(&parent_directory, title);
|
||||
let dir_target = parent_directory.join(&stem);
|
||||
let target = dir_target.join(format!("{}.md", stem));
|
||||
let parent_relative_path = normalize_relative_path(root, &parent_directory)?;
|
||||
let relative_path = normalize_relative_path(root, &target)?;
|
||||
let page_id = local_markdown_path_page_id(&relative_path);
|
||||
let display_title = file_stem_title(&format!("{stem}.md"));
|
||||
@@ -4628,6 +4629,7 @@ fn create_local_markdown_page(
|
||||
"id": page_id,
|
||||
"documentId": page_id,
|
||||
"title": display_title,
|
||||
"parentRelativePath": parent_relative_path,
|
||||
"relativePath": relative_path,
|
||||
"action": "create",
|
||||
"sourceKind": "local_folder",
|
||||
@@ -4642,6 +4644,7 @@ fn create_local_folder(
|
||||
let metadata = load_local_folder_metadata(root)?;
|
||||
let parent_directory = resolve_local_parent_directory(root, &metadata, parent_id)?;
|
||||
let target = parent_directory.join(determine_folder_stem(&parent_directory, title));
|
||||
let parent_relative_path = normalize_relative_path(root, &parent_directory)?;
|
||||
fs::create_dir_all(&target).map_err(|error| {
|
||||
WebError::bad_request_code(
|
||||
"local_tree_command_failed",
|
||||
@@ -4651,6 +4654,7 @@ fn create_local_folder(
|
||||
Ok(json!({
|
||||
"ok": true,
|
||||
"id": local_directory_group_id(&normalize_relative_path(root, &target)?),
|
||||
"parentRelativePath": parent_relative_path,
|
||||
"relativePath": normalize_relative_path(root, &target)?,
|
||||
"action": "createFolder",
|
||||
"sourceKind": "local_folder",
|
||||
@@ -12620,6 +12624,16 @@ fn main() {}
|
||||
);
|
||||
assert_eq!(result["action"], "create");
|
||||
assert_eq!(result["sourceKind"], "local_folder");
|
||||
assert_eq!(result["parentRelativePath"], "");
|
||||
assert!(
|
||||
result["affectedParents"]
|
||||
.as_array()
|
||||
.expect("affected parents")
|
||||
.iter()
|
||||
.any(|parent| parent["relativePath"].as_str() == Some("")),
|
||||
"create page affectedParents 应包含承载新页面包的父级 root: {}",
|
||||
result["affectedParents"]
|
||||
);
|
||||
|
||||
// 页面标题来自文件名,默认正文不再写第二个标题真相。
|
||||
let content = std::fs::read_to_string(root.join(relative_path)).expect("read markdown");
|
||||
@@ -12661,6 +12675,16 @@ fn main() {}
|
||||
.exists(),
|
||||
"default folder creation must not create page markdown"
|
||||
);
|
||||
assert_eq!(result["parentRelativePath"], "");
|
||||
assert!(
|
||||
result["affectedParents"]
|
||||
.as_array()
|
||||
.expect("affected parents")
|
||||
.iter()
|
||||
.any(|parent| parent["relativePath"].as_str() == Some("")),
|
||||
"create folder affectedParents 应包含承载新文件夹的父级 root: {}",
|
||||
result["affectedParents"]
|
||||
);
|
||||
|
||||
let _ = std::fs::remove_dir_all(&root);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user