feat: workspace 目录树服务端懒加载
- api.ts: listWorkspaceDirectories 支持 parent_path 查询; WorkspaceDirectory 增加 has_children; 同步 WorkspaceBoundApi 签名 - AuthContext: 绑定透传 parentPath - scriptWorkspaceStore: 新增 expandedPaths/loadingChildrenPaths/loadedChildPaths, loadChildren/toggleExpanded, 局部刷新 createFolder/deleteDirectory - WorkspaceTree: 移除 useState, 改为受控展开/加载状态 - ScriptExplorer: 从 store 读取并透传展开状态与 toggle
This commit is contained in:
@@ -191,6 +191,7 @@ export type WorkspaceDirectory = {
|
||||
path: string;
|
||||
name: string;
|
||||
parent_path: string;
|
||||
has_children?: boolean;
|
||||
};
|
||||
|
||||
type ApiEnvelope<T> = {
|
||||
@@ -443,9 +444,13 @@ export async function deleteScript(
|
||||
|
||||
export async function listWorkspaceDirectories(
|
||||
workspaceId: string,
|
||||
parentPath: string = "",
|
||||
): Promise<WorkspaceDirectory[]> {
|
||||
const query = parentPath
|
||||
? `?parent_path=${encodeURIComponent(parentPath)}`
|
||||
: "";
|
||||
const data = await apiRequest<{ directories: WorkspaceDirectory[] }>(
|
||||
"/api/v1/workspace-tree",
|
||||
`/api/v1/workspace-directories${query}`,
|
||||
{},
|
||||
workspaceId,
|
||||
);
|
||||
@@ -1325,9 +1330,9 @@ export type WorkspaceBoundApi = {
|
||||
setScriptLock: (
|
||||
scriptId: string,
|
||||
isLocked: boolean,
|
||||
) => Promise<ScriptItem>;
|
||||
listWorkspaceDirectories: () => Promise<WorkspaceDirectory[]>;
|
||||
createWorkspaceDirectory: (
|
||||
) => Promise<ScriptItem>;
|
||||
listWorkspaceDirectories: (parentPath?: string) => Promise<WorkspaceDirectory[]>;
|
||||
createWorkspaceDirectory: (
|
||||
directoryName: string,
|
||||
parentPath?: string,
|
||||
) => Promise<WorkspaceDirectory>;
|
||||
|
||||
Reference in New Issue
Block a user