mirror of
https://github.com/Horizontal42/summarum.git
synced 2026-11-11 02:12:00 +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");
|
||||
await getCurrentWebview().onDragDropEvent(async (event) => {
|
||||
if (event.payload.type !== "drop") return;
|
||||
for (const path of event.payload.paths) {
|
||||
try {
|
||||
const content = await invoke<string>("read_text_file", { path });
|
||||
cb(content);
|
||||
} catch (e) {
|
||||
logger.warn("file drop rejected", path, e);
|
||||
}
|
||||
}
|
||||
await Promise.all(
|
||||
event.payload.paths.map(async (path) => {
|
||||
try {
|
||||
const content = await invoke<string>("read_text_file", { path });
|
||||
cb(content);
|
||||
} catch (e) {
|
||||
logger.warn("file drop rejected", path, e);
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue