mirror of
https://github.com/basketikun/infinite-canvas.git
synced 2026-08-07 01:54:24 +08:00
feat(workbench): implement cleanup for history images to retain references after asset deletion
This commit is contained in:
@@ -14,6 +14,8 @@ export type UploadedImage = {
|
||||
};
|
||||
|
||||
const store = localforage.createInstance({ name: "infinite-canvas", storeName: "image_files" });
|
||||
const imageLogStore = localforage.createInstance({ name: "infinite-canvas", storeName: "image_generation_logs" });
|
||||
const videoLogStore = localforage.createInstance({ name: "infinite-canvas", storeName: "video_generation_logs" });
|
||||
const objectUrls = new Map<string, string>();
|
||||
|
||||
export async function uploadImage(input: string | Blob): Promise<UploadedImage> {
|
||||
@@ -67,6 +69,14 @@ export async function deleteStoredImages(keys: Iterable<string>) {
|
||||
|
||||
export async function cleanupUnusedImages(usedData: unknown) {
|
||||
const usedKeys = collectImageStorageKeys(usedData);
|
||||
await Promise.all([
|
||||
imageLogStore.iterate((value) => {
|
||||
collectImageStorageKeys(value, usedKeys);
|
||||
}),
|
||||
videoLogStore.iterate((value) => {
|
||||
collectImageStorageKeys(value, usedKeys);
|
||||
}),
|
||||
]);
|
||||
const unused: string[] = [];
|
||||
await store.iterate((_value, key) => {
|
||||
if (!usedKeys.has(key)) unused.push(key);
|
||||
|
||||
Reference in New Issue
Block a user