mirror of
https://github.com/Horizontal42/summarum.git
synced 2026-11-10 21:31:59 +03:00
perf(storage): parallelize sequential file reads in onFileDrop
Refactored the sequential `for...of` loop over `event.payload.paths` in `onFileDrop` to use `Promise.all` with `paths.map`, executing `invoke("read_text_file", ...)` concurrently. This resolves the performance bottleneck where reading multiple dropped files was artificially serialized.
Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com>
This commit is contained in:
parent
37cfd2144b
commit
069360e387
1 changed files with 10 additions and 8 deletions
|
|
@ -310,14 +310,16 @@ export async function onFileDrop(cb: (content: string) => void): Promise<void> {
|
||||||
const { getCurrentWebview } = await import("@tauri-apps/api/webview");
|
const { getCurrentWebview } = await import("@tauri-apps/api/webview");
|
||||||
await getCurrentWebview().onDragDropEvent(async (event) => {
|
await getCurrentWebview().onDragDropEvent(async (event) => {
|
||||||
if (event.payload.type !== "drop") return;
|
if (event.payload.type !== "drop") return;
|
||||||
for (const path of event.payload.paths) {
|
await Promise.all(
|
||||||
try {
|
event.payload.paths.map(async (path) => {
|
||||||
const content = await invoke<string>("read_text_file", { path });
|
try {
|
||||||
cb(content);
|
const content = await invoke<string>("read_text_file", { path });
|
||||||
} catch (e) {
|
cb(content);
|
||||||
logger.warn("file drop rejected", path, e);
|
} catch (e) {
|
||||||
}
|
logger.warn("file drop rejected", path, e);
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue