()
| 573 | } |
| 574 | |
| 575 | async function deleteFile() { |
| 576 | const msg = strings["delete entry"].replace("{name}", name); |
| 577 | const confirmation = await confirm(strings.warning, msg); |
| 578 | if (!confirmation) return; |
| 579 | startLoading(); |
| 580 | if (!(await fsOperation(url).exists())) return; |
| 581 | // await fsOperation(url).delete(); |
| 582 | recents.removeFile(url); |
| 583 | if (helpers.isFile(type)) { |
| 584 | await fsOperation(url).delete(); |
| 585 | removeEntryFromOpenFolder(url); |
| 586 | const file = editorManager.getFile(url, "uri"); |
| 587 | if (file) file.uri = null; |
| 588 | editorManager.onupdate("delete-file"); |
| 589 | editorManager.emit("update", "delete-file"); |
| 590 | } else { |
| 591 | if (isTerminalSafUri(url)) { |
| 592 | const fs = fsOperation(url); |
| 593 | const entries = await fs.lsDir(); |
| 594 | if (entries.length === 0) { |
| 595 | await fs.delete(); |
| 596 | } else { |
| 597 | const deleteRecursively = async (currentUrl) => { |
| 598 | const currentFs = fsOperation(currentUrl); |
| 599 | const currentEntries = await currentFs.lsDir(); |
| 600 | for (const entry of currentEntries) { |
| 601 | if (entry.isDirectory) { |
| 602 | await deleteRecursively(entry.url); |
| 603 | } else { |
| 604 | await fsOperation(entry.url).delete(); |
| 605 | } |
| 606 | } |
| 607 | await currentFs.delete(); |
| 608 | }; |
| 609 | await deleteRecursively(url); |
| 610 | } |
| 611 | } else { |
| 612 | await fsOperation(url).delete(); |
| 613 | } |
| 614 | recents.removeFolder(url); |
| 615 | helpers.updateUriOfAllActiveFiles(url, null); |
| 616 | removeEntryFromOpenFolder(url); |
| 617 | editorManager.onupdate("delete-folder"); |
| 618 | editorManager.emit("update", "delete-folder"); |
| 619 | } |
| 620 | |
| 621 | toast(strings.success); |
| 622 | FileList.remove(url); |
| 623 | } |
| 624 | |
| 625 | async function renameFile() { |
| 626 | if (isTermuxSafUri(url) && !helpers.isFile(type)) { |
no test coverage detected