|
@@ -364,29 +364,27 @@ export class DirListing extends Widget {
|
|
|
*
|
|
|
* @returns A promise that resolves when the operation is complete.
|
|
|
*/
|
|
|
- delete(): Promise<void> {
|
|
|
- let names: string[] = [];
|
|
|
- each(this._sortedItems, item => {
|
|
|
- if (this._selection[item.name]) {
|
|
|
- names.push(item.name);
|
|
|
- }
|
|
|
+ async delete(): Promise<void> {
|
|
|
+ const items = this._sortedItems.filter(item => this._selection[item.name]);
|
|
|
+
|
|
|
+ if (!items.length) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const message =
|
|
|
+ items.length === 1
|
|
|
+ ? `Are you sure you want to permanently delete: ${items[0].name}?`
|
|
|
+ : `Are you sure you want to permanently delete the ${items.length} ` +
|
|
|
+ `files/folders selected?`;
|
|
|
+ const result = await showDialog({
|
|
|
+ title: 'Delete',
|
|
|
+ body: message,
|
|
|
+ buttons: [Dialog.cancelButton(), Dialog.warnButton({ label: 'Delete' })]
|
|
|
});
|
|
|
- let message = `Are you sure you want to permanently delete the ${names.length} files/folders selected?`;
|
|
|
- if (names.length === 1) {
|
|
|
- message = `Are you sure you want to permanently delete: ${names[0]}?`;
|
|
|
- }
|
|
|
- if (names.length) {
|
|
|
- return showDialog({
|
|
|
- title: 'Delete',
|
|
|
- body: message,
|
|
|
- buttons: [Dialog.cancelButton(), Dialog.warnButton({ label: 'Delete' })]
|
|
|
- }).then(result => {
|
|
|
- if (!this.isDisposed && result.button.accept) {
|
|
|
- return this._delete(names);
|
|
|
- }
|
|
|
- });
|
|
|
+
|
|
|
+ if (!this.isDisposed && result.button.accept) {
|
|
|
+ return this._delete(items.map(item => item.path));
|
|
|
}
|
|
|
- return Promise.resolve(void 0);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -923,7 +921,7 @@ export class DirListing extends Widget {
|
|
|
this._onItemOpened.emit(item);
|
|
|
if (item.type === 'directory') {
|
|
|
this._model
|
|
|
- .cd(item.name)
|
|
|
+ .cd(item.path)
|
|
|
.catch(error => showErrorMessage('Open directory', error));
|
|
|
} else {
|
|
|
let path = item.path;
|
|
@@ -1328,19 +1326,16 @@ export class DirListing extends Widget {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Delete the files with the given names.
|
|
|
+ * Delete the files with the given paths.
|
|
|
*/
|
|
|
- private _delete(names: string[]): Promise<void> {
|
|
|
- const promises: Promise<void>[] = [];
|
|
|
- const basePath = this._model.path;
|
|
|
- for (let name of names) {
|
|
|
- let newPath = PathExt.join(basePath, name);
|
|
|
- let promise = this._model.manager.deleteFile(newPath).catch(err => {
|
|
|
- void showErrorMessage('Delete Failed', err);
|
|
|
- });
|
|
|
- promises.push(promise);
|
|
|
- }
|
|
|
- return Promise.all(promises).then(() => undefined);
|
|
|
+ private async _delete(paths: string[]): Promise<void> {
|
|
|
+ await Promise.all(
|
|
|
+ paths.map(path =>
|
|
|
+ this._model.manager.deleteFile(path).catch(err => {
|
|
|
+ void showErrorMessage('Delete Failed', err);
|
|
|
+ })
|
|
|
+ )
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
/**
|