0.6 rust重构01

This commit is contained in:
lix-2026
2026-04-14 13:22:29 +08:00
parent 71fb1aee7e
commit 84a8454fa9
401 changed files with 5841 additions and 1512 deletions
@@ -3,7 +3,12 @@ import { useQuery, useConvexAuth } from "convex/react";
import type { SidebarInitialData } from "@/components/sidebar/types";
import type { MediaAsset } from "@/types/media";
import { api } from "@/lib/convex/api";
import { buildSidebarInitialData } from "@/lib/sidebar-data";
import { toBrowserAccessibleUrl } from "@/lib/url/browser-file-url";
type CurrentUserRecord = {
_id?: string;
};
/**
* Convex 模式下的侧边栏数据 hook
@@ -23,9 +28,11 @@ export function useConvexSidebarData(workspaceId: string): {
// 显式转为 boolean,确保类型正确
const shouldFetch = Boolean(isAuthenticated && workspaceId);
const currentUser = useQuery(api.users.currentUser, shouldFetch ? {} : "skip");
const currentUserRecord =
currentUser && typeof currentUser === "object" ? (currentUser as CurrentUserRecord) : null;
const userId =
currentUser && typeof currentUser === "object" && typeof (currentUser as any)._id === "string"
? String((currentUser as any)._id)
currentUserRecord && typeof currentUserRecord._id === "string"
? currentUserRecord._id
: "";
const shouldFetchAuthed = Boolean(shouldFetch && userId);
@@ -87,133 +94,16 @@ export function useConvexSidebarData(workspaceId: string): {
return null;
}
const activeMindmaps = (mindmaps ?? []).filter((r) => !r.deleted_at);
const trashedMindmaps = (mindmaps ?? []).filter((r) => !!r.deleted_at);
const mindmapDocs = Array.from(new Set(activeMindmaps.map((r) => r.document_id)));
const mindmapAssets: MediaAsset[] = activeMindmaps.map((r) => {
const isLegacy = r.mindmap_id.startsWith("legacy-");
return {
id: r.mindmap_id,
workspace_id: r.workspace_id ?? workspaceId,
document_id: r.document_id,
asset_type: "mindmap",
file_url: null,
thumbnail_url: null,
bucket: null,
storage_path: null,
file_name: isLegacy ? "mindmap.json" : `mindmap-${r.mindmap_id}.json`,
file_size: null,
mime_type: "application/json",
ocr_payload: undefined,
ocr_strategy: null,
ocr_text: null,
ocr_status: null,
signed_url: null,
created_at: r.created_at ?? "",
updated_at: r.updated_at ?? "",
};
});
const trashedMindmapAssets: MediaAsset[] = trashedMindmaps.map((r) => {
const isLegacy = r.mindmap_id.startsWith("legacy-");
return {
id: r.mindmap_id,
workspace_id: r.workspace_id ?? workspaceId,
document_id: r.document_id,
asset_type: "mindmap",
file_url: null,
thumbnail_url: null,
bucket: null,
storage_path: null,
file_name: isLegacy ? "mindmap.json" : `mindmap-${r.mindmap_id}.json`,
file_size: null,
mime_type: "application/json",
ocr_payload: undefined,
ocr_strategy: null,
ocr_text: null,
ocr_status: null,
deleted_at: r.deleted_at ?? null,
deleted_by: r.deleted_by ?? null,
purged_at: null,
signed_url: null,
created_at: r.created_at ?? "",
updated_at: r.updated_at ?? "",
};
});
const tableAssets: MediaAsset[] = (tables ?? [])
.filter((row) => !row.is_archived)
.map((row) => {
const base = String(row.title ?? "未命名表格").trim() || "未命名表格";
const fileName = base.toLowerCase().endsWith(".luckysheet") ? base : `${base}.luckysheet`;
return {
id: row.id,
workspace_id: row.workspace_id ?? workspaceId,
document_id: row.document_id,
asset_type: "luckysheet",
file_url: null,
thumbnail_url: null,
bucket: null,
storage_path: null,
file_name: fileName,
file_size: null,
mime_type: "application/json",
ocr_payload: undefined,
ocr_strategy: null,
ocr_text: null,
ocr_status: null,
signed_url: null,
created_at: row.created_at ?? "",
updated_at: row.updated_at ?? "",
};
});
const trashedTableAssets: MediaAsset[] = (tables ?? [])
.filter((row) => Boolean(row.is_archived))
.map((row) => {
const base = String(row.title ?? "未命名表格").trim() || "未命名表格";
const fileName = base.toLowerCase().endsWith(".luckysheet") ? base : `${base}.luckysheet`;
return {
id: row.id,
workspace_id: row.workspace_id ?? workspaceId,
document_id: row.document_id,
asset_type: "luckysheet",
file_url: null,
thumbnail_url: null,
bucket: null,
storage_path: null,
file_name: fileName,
file_size: null,
mime_type: "application/json",
ocr_payload: undefined,
ocr_strategy: null,
ocr_text: null,
ocr_status: null,
deleted_at: row.deleted_at ?? row.updated_at ?? null,
deleted_by: row.deleted_by ?? null,
purged_at: row.purged_at ?? null,
signed_url: null,
created_at: row.created_at ?? "",
updated_at: row.updated_at ?? "",
};
});
return {
return buildSidebarInitialData({
activeWorkspaceId: workspacesResult.activeWorkspaceId || workspaceId,
workspaces: workspacesResult.workspaces,
documents,
trashedDocuments,
trashedMediaAssets: ((trashedMediaAssets ?? []) as MediaAsset[]).map(normalizeAssetUrls),
trashedMindmapAssets,
trashedTableAssets,
mindmapDocs,
mindmapAssets,
mindmapAssetChildren: {},
tableAssets,
mindmaps,
mediaAssets: ((mediaAssets ?? []) as MediaAsset[]).map(normalizeAssetUrls),
};
trashedMediaAssets: ((trashedMediaAssets ?? []) as MediaAsset[]).map(normalizeAssetUrls),
tables,
});
}, [
currentUser,
documents,