feat(assets&canvas): 实现素材回收站机制、自动定时清理策略与过期时间提示,增加画布创建与变更历史时间线
This commit is contained in:
1 parent
dca252434b
commit
867a18a948
17 files changed
+1411
-321
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import { create } from "zustand";
|
||||
import { persist } from "zustand/middleware";
|
||||
import type { CanvasProject } from "@/stores/canvas/use-canvas-store";
|
||||
|
||||
export type DeletedCanvasHistoryItem = {
|
||||
id: string;
|
||||
title: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string;
|
||||
nodeCount: number;
|
||||
coverUrl?: string;
|
||||
};
|
||||
|
||||
type CanvasHistoryStore = {
|
||||
deletedProjects: DeletedCanvasHistoryItem[];
|
||||
recordDeletedProjects: (projects: CanvasProject[]) => void;
|
||||
removeDeletedHistoryItem: (id: string) => void;
|
||||
clearDeletedHistory: () => void;
|
||||
};
|
||||
|
||||
export const useCanvasHistoryStore = create<CanvasHistoryStore>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
deletedProjects: [],
|
||||
recordDeletedProjects: (projects) => {
|
||||
const now = new Date().toISOString();
|
||||
const newItems: DeletedCanvasHistoryItem[] = projects.map((p) => ({
|
||||
id: p.id,
|
||||
title: p.title || "未命名画布",
|
||||
createdAt: p.createdAt || p.updatedAt || now,
|
||||
updatedAt: p.updatedAt || now,
|
||||
deletedAt: now,
|
||||
nodeCount: p.nodes?.length || 0,
|
||||
coverUrl: p.nodes?.find((n) => n.type === "image" && n.metadata?.content)?.metadata?.content as string | undefined,
|
||||
}));
|
||||
set((state) => {
|
||||
const existingIds = new Set(newItems.map((item) => item.id));
|
||||
const filtered = state.deletedProjects.filter((item) => !existingIds.has(item.id));
|
||||
return {
|
||||
deletedProjects: [...newItems, ...filtered].slice(0, 200),
|
||||
};
|
||||
});
|
||||
},
|
||||
removeDeletedHistoryItem: (id) =>
|
||||
set((state) => ({
|
||||
deletedProjects: state.deletedProjects.filter((item) => item.id !== id),
|
||||
})),
|
||||
clearDeletedHistory: () => set({ deletedProjects: [] }),
|
||||
}),
|
||||
{
|
||||
name: "infinite-canvas:deleted_history_store",
|
||||
},
|
||||
),
|
||||
);
|
||||
@@ -22,6 +22,7 @@ export type RuntimeLimits = {
|
||||
activeTaskLimit: number;
|
||||
resourceUploadMB: number;
|
||||
sessionUploadMB: number;
|
||||
recycleBinRetentionDays?: number;
|
||||
};
|
||||
|
||||
export type FeatureAvailability = {
|
||||
|
||||
Reference in new issue
Block a user