@theia/workspace 1.22.0-next.21 → 1.22.0-next.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/workspace-delete-handler.d.ts +9 -0
- package/lib/browser/workspace-delete-handler.d.ts.map +1 -1
- package/lib/browser/workspace-delete-handler.js +34 -1
- package/lib/browser/workspace-delete-handler.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/workspace-delete-handler.ts +42 -1
|
@@ -70,8 +70,17 @@ export declare class WorkspaceDeleteHandler implements UriCommandHandler<URI[]>
|
|
|
70
70
|
* Perform deletion of a given URI.
|
|
71
71
|
*
|
|
72
72
|
* @param uri URI of selected resource.
|
|
73
|
+
* @param options deletion options.
|
|
73
74
|
*/
|
|
74
75
|
protected delete(uri: URI, options: FileDeleteOptions): Promise<void>;
|
|
76
|
+
protected deleteFilePermanently(uri: URI, options: FileDeleteOptions): Promise<void>;
|
|
77
|
+
protected moveFileToTrash(uri: URI, options: FileDeleteOptions): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Display dialog to confirm the permanent deletion of a file.
|
|
80
|
+
*
|
|
81
|
+
* @param uri URI of selected resource.
|
|
82
|
+
*/
|
|
83
|
+
protected confirmDeletePermanently(uri: URI): Promise<boolean>;
|
|
75
84
|
/**
|
|
76
85
|
* Close widget without saving changes.
|
|
77
86
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-delete-handler.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-delete-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAiB,gBAAgB,EAAqC,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAkC,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-delete-handler.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-delete-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAiB,gBAAgB,EAAqC,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAkC,MAAM,oCAAoC,CAAC;AAGvG,qBACa,sBAAuB,YAAW,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAGnE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAG3C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAExD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAI/B;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAaxF;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,WAAW;IA2B9D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAStC;;;;;OAKG;cACa,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAW3D,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAI1E,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpF;;;;OAIG;cACa,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBpE;;;;OAIG;cACa,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAS9D"}
|
|
@@ -32,6 +32,7 @@ const workspace_service_1 = require("./workspace-service");
|
|
|
32
32
|
const workspace_utils_1 = require("./workspace-utils");
|
|
33
33
|
const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
|
|
34
34
|
const filesystem_preferences_1 = require("@theia/filesystem/lib/browser/filesystem-preferences");
|
|
35
|
+
const nls_1 = require("@theia/core/lib/common/nls");
|
|
35
36
|
let WorkspaceDeleteHandler = class WorkspaceDeleteHandler {
|
|
36
37
|
/**
|
|
37
38
|
* Determine if the command is visible.
|
|
@@ -133,18 +134,50 @@ let WorkspaceDeleteHandler = class WorkspaceDeleteHandler {
|
|
|
133
134
|
* Perform deletion of a given URI.
|
|
134
135
|
*
|
|
135
136
|
* @param uri URI of selected resource.
|
|
137
|
+
* @param options deletion options.
|
|
136
138
|
*/
|
|
137
139
|
async delete(uri, options) {
|
|
138
140
|
try {
|
|
139
141
|
await Promise.all([
|
|
140
142
|
this.closeWithoutSaving(uri),
|
|
141
|
-
this.
|
|
143
|
+
options.useTrash ? this.moveFileToTrash(uri, options) : this.deleteFilePermanently(uri, options)
|
|
142
144
|
]);
|
|
143
145
|
}
|
|
144
146
|
catch (e) {
|
|
145
147
|
console.error(e);
|
|
146
148
|
}
|
|
147
149
|
}
|
|
150
|
+
async deleteFilePermanently(uri, options) {
|
|
151
|
+
this.fileService.delete(uri, Object.assign(Object.assign({}, options), { useTrash: false }));
|
|
152
|
+
}
|
|
153
|
+
async moveFileToTrash(uri, options) {
|
|
154
|
+
try {
|
|
155
|
+
this.fileService.delete(uri, Object.assign(Object.assign({}, options), { useTrash: true }));
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error('Error deleting with trash:', error);
|
|
159
|
+
if (await this.confirmDeletePermanently(uri)) {
|
|
160
|
+
return this.deleteFilePermanently(uri, options);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Display dialog to confirm the permanent deletion of a file.
|
|
166
|
+
*
|
|
167
|
+
* @param uri URI of selected resource.
|
|
168
|
+
*/
|
|
169
|
+
async confirmDeletePermanently(uri) {
|
|
170
|
+
const title = nls_1.nls.localize('theia/workspace/confirmDeletePermanently.title', 'Error deleting file');
|
|
171
|
+
const msg = document.createElement('div');
|
|
172
|
+
const question = document.createElement('p');
|
|
173
|
+
question.textContent = nls_1.nls.localize('theia/workspace/confirmDeletePermanently.description', 'Failed to delete "{0}" using the Trash. Do you want to permanently delete instead?', uri.path.base);
|
|
174
|
+
msg.append(question);
|
|
175
|
+
const info = document.createElement('p');
|
|
176
|
+
info.textContent = nls_1.nls.localize('theia/workspace/confirmDeletePermanently.solution', 'You can disable the use of Trash in the preferences.');
|
|
177
|
+
msg.append(info);
|
|
178
|
+
const response = await new browser_1.ConfirmDialog({ title, msg }).open();
|
|
179
|
+
return response || false;
|
|
180
|
+
}
|
|
148
181
|
/**
|
|
149
182
|
* Close widget without saving changes.
|
|
150
183
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-delete-handler.js","sourceRoot":"","sources":["../../src/browser/workspace-delete-handler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;AAElF,4DAAkE;AAClE,oDAA6C;AAC7C,qDAA6G;AAE7G,2DAAuD;AACvD,uDAAmD;AACnD,6EAAyE;AACzE,iGAA6F;
|
|
1
|
+
{"version":3,"file":"workspace-delete-handler.js","sourceRoot":"","sources":["../../src/browser/workspace-delete-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/workspace",
|
|
3
|
-
"version": "1.22.0-next.
|
|
3
|
+
"version": "1.22.0-next.26+8b3466971c1",
|
|
4
4
|
"description": "Theia - Workspace Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.22.0-next.
|
|
7
|
-
"@theia/filesystem": "1.22.0-next.
|
|
8
|
-
"@theia/variable-resolver": "1.22.0-next.
|
|
6
|
+
"@theia/core": "1.22.0-next.26+8b3466971c1",
|
|
7
|
+
"@theia/filesystem": "1.22.0-next.26+8b3466971c1",
|
|
8
|
+
"@theia/variable-resolver": "1.22.0-next.26+8b3466971c1",
|
|
9
9
|
"ajv": "^6.5.3",
|
|
10
10
|
"jsonc-parser": "^2.2.0",
|
|
11
11
|
"moment": "2.24.0",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"nyc": {
|
|
51
51
|
"extends": "../../configs/nyc.json"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "8b3466971c112af3e655e4eb4b19f80cfc511314"
|
|
54
54
|
}
|
|
@@ -23,6 +23,7 @@ import { WorkspaceUtils } from './workspace-utils';
|
|
|
23
23
|
import { FileService } from '@theia/filesystem/lib/browser/file-service';
|
|
24
24
|
import { FileSystemPreferences } from '@theia/filesystem/lib/browser/filesystem-preferences';
|
|
25
25
|
import { FileDeleteOptions, FileSystemProviderCapabilities } from '@theia/filesystem/lib/common/files';
|
|
26
|
+
import { nls } from '@theia/core/lib/common/nls';
|
|
26
27
|
|
|
27
28
|
@injectable()
|
|
28
29
|
export class WorkspaceDeleteHandler implements UriCommandHandler<URI[]> {
|
|
@@ -147,18 +148,58 @@ export class WorkspaceDeleteHandler implements UriCommandHandler<URI[]> {
|
|
|
147
148
|
* Perform deletion of a given URI.
|
|
148
149
|
*
|
|
149
150
|
* @param uri URI of selected resource.
|
|
151
|
+
* @param options deletion options.
|
|
150
152
|
*/
|
|
151
153
|
protected async delete(uri: URI, options: FileDeleteOptions): Promise<void> {
|
|
152
154
|
try {
|
|
153
155
|
await Promise.all([
|
|
154
156
|
this.closeWithoutSaving(uri),
|
|
155
|
-
this.
|
|
157
|
+
options.useTrash ? this.moveFileToTrash(uri, options) : this.deleteFilePermanently(uri, options)
|
|
156
158
|
]);
|
|
157
159
|
} catch (e) {
|
|
158
160
|
console.error(e);
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
163
|
|
|
164
|
+
protected async deleteFilePermanently(uri: URI, options: FileDeleteOptions): Promise<void> {
|
|
165
|
+
this.fileService.delete(uri, { ...options, useTrash: false });
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
protected async moveFileToTrash(uri: URI, options: FileDeleteOptions): Promise<void> {
|
|
169
|
+
try {
|
|
170
|
+
this.fileService.delete(uri, { ...options, useTrash: true });
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.error('Error deleting with trash:', error);
|
|
173
|
+
if (await this.confirmDeletePermanently(uri)) {
|
|
174
|
+
return this.deleteFilePermanently(uri, options);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Display dialog to confirm the permanent deletion of a file.
|
|
181
|
+
*
|
|
182
|
+
* @param uri URI of selected resource.
|
|
183
|
+
*/
|
|
184
|
+
protected async confirmDeletePermanently(uri: URI): Promise<boolean> {
|
|
185
|
+
const title = nls.localize('theia/workspace/confirmDeletePermanently.title', 'Error deleting file');
|
|
186
|
+
|
|
187
|
+
const msg = document.createElement('div');
|
|
188
|
+
|
|
189
|
+
const question = document.createElement('p');
|
|
190
|
+
question.textContent = nls.localize('theia/workspace/confirmDeletePermanently.description',
|
|
191
|
+
'Failed to delete "{0}" using the Trash. Do you want to permanently delete instead?',
|
|
192
|
+
uri.path.base);
|
|
193
|
+
msg.append(question);
|
|
194
|
+
|
|
195
|
+
const info = document.createElement('p');
|
|
196
|
+
info.textContent = nls.localize('theia/workspace/confirmDeletePermanently.solution', 'You can disable the use of Trash in the preferences.');
|
|
197
|
+
msg.append(info);
|
|
198
|
+
|
|
199
|
+
const response = await new ConfirmDialog({ title, msg }).open();
|
|
200
|
+
return response || false;
|
|
201
|
+
}
|
|
202
|
+
|
|
162
203
|
/**
|
|
163
204
|
* Close widget without saving changes.
|
|
164
205
|
*
|