Skip to content

Commit 35e9de0

Browse files
committed
perf(deleteAction): Queue delete requests
When multiple files are deleted at once, all the requests bombard the server simultaneously, causing performance issues. This commit adds queuing that limits the concurrency of these requests to 5 at a time. Signed-off-by: fenn-cs <[email protected]>
1 parent d8c4671 commit 35e9de0

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

apps/files/src/actions/deleteAction.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import NetworkOffSvg from '@mdi/svg/svg/network-off.svg?raw'
3030
import TrashCanSvg from '@mdi/svg/svg/trash-can.svg?raw'
3131

3232
import logger from '../logger.js'
33+
import PQueue from 'p-queue'
3334

3435
const canUnshareOnly = (nodes: Node[]) => {
3536
return nodes.every(node => node.attributes['is-mount-root'] === true
@@ -119,6 +120,8 @@ const displayName = (nodes: Node[], view: View) => {
119120
return t('files', 'Delete')
120121
}
121122

123+
const queue = new PQueue({ concurrency: 5 })
124+
122125
export const action = new FileAction({
123126
id: 'delete',
124127
displayName,
@@ -183,7 +186,7 @@ export const action = new FileAction({
183186
return Promise.all(nodes.map(() => false))
184187
}
185188

186-
return Promise.all(nodes.map(node => this.exec(node, view, dir)))
189+
return Promise.all(nodes.map(node => queue.add(() => this.exec(node, view, dir))))
187190
},
188191

189192
order: 100,

0 commit comments

Comments
 (0)