Skip to content

Commit d3c5235

Browse files
authored
feat: drop electron 13 support (#3050)
1 parent f9dc4f4 commit d3c5235

5 files changed

Lines changed: 123 additions & 246 deletions

File tree

packages/core-electron-main/src/bootstrap/services/ui.ts

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,7 @@ export class ElectronMainUIService
8282
}
8383

8484
async moveToTrash(path: string) {
85-
if (semver.lt(process.versions.electron, '13.0.0')) {
86-
// Removed: shell.moveItemToTrash()
87-
// https://www.electronjs.org/docs/latest/breaking-changes#removed-shellmoveitemtotrash
88-
await (shell as any).moveItemToTrash(path);
89-
} else {
90-
await shell.trashItem(path);
91-
}
85+
await shell.trashItem(path);
9286
}
9387

9488
async revealInFinder(path: string) {
@@ -145,23 +139,17 @@ export class ElectronMainUIService
145139
async showOpenDialog(windowId: number, options: Electron.OpenDialogOptions): Promise<string[] | undefined> {
146140
return new Promise((resolve, reject) => {
147141
try {
148-
if (semver.lt(process.versions.electron, '6.0.0')) {
149-
(dialog as any).showOpenDialog(BrowserWindow.fromId(windowId), options, (paths) => {
150-
resolve(paths);
151-
});
152-
} else {
153-
const win = BrowserWindow.fromId(windowId);
154-
if (!win) {
155-
return reject(new Error(`BrowserWindow ${windowId} not found`));
156-
}
157-
dialog.showOpenDialog(win, options).then((value) => {
158-
if (value.canceled) {
159-
resolve(undefined);
160-
} else {
161-
resolve(value.filePaths);
162-
}
163-
}, reject);
142+
const win = BrowserWindow.fromId(windowId);
143+
if (!win) {
144+
return reject(new Error(`BrowserWindow ${windowId} not found`));
164145
}
146+
dialog.showOpenDialog(win, options).then((value) => {
147+
if (value.canceled) {
148+
resolve(undefined);
149+
} else {
150+
resolve(value.filePaths);
151+
}
152+
}, reject);
165153
} catch (e) {
166154
reject(e);
167155
}
@@ -170,23 +158,17 @@ export class ElectronMainUIService
170158
async showSaveDialog(windowId: number, options: Electron.SaveDialogOptions): Promise<string | undefined> {
171159
return new Promise((resolve, reject) => {
172160
try {
173-
if (semver.lt(process.versions.electron, '6.0.0')) {
174-
(dialog as any).showSaveDialog(BrowserWindow.fromId(windowId), options, (path) => {
175-
resolve(path);
176-
});
177-
} else {
178-
const win = BrowserWindow.fromId(windowId);
179-
if (!win) {
180-
return reject(new Error(`BrowserWindow ${windowId} not found`));
181-
}
182-
dialog.showSaveDialog(win, options).then((value) => {
183-
if (value.canceled) {
184-
resolve(undefined);
185-
} else {
186-
resolve(value.filePath);
187-
}
188-
}, reject);
161+
const win = BrowserWindow.fromId(windowId);
162+
if (!win) {
163+
return reject(new Error(`BrowserWindow ${windowId} not found`));
189164
}
165+
dialog.showSaveDialog(win, options).then((value) => {
166+
if (value.canceled) {
167+
resolve(undefined);
168+
} else {
169+
resolve(value.filePath);
170+
}
171+
}, reject);
190172
} catch (e) {
191173
reject(e);
192174
}

packages/core-electron-main/src/bootstrap/window.ts

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
IpcMainEvent,
1111
WebPreferences,
1212
} from 'electron';
13-
import semver from 'semver';
1413
import treeKill from 'tree-kill';
1514

1615
import { Injectable, Autowired } from '@opensumi/di';
@@ -216,26 +215,12 @@ export class CodeWindow extends Disposable implements ICodeWindow {
216215
}
217216

218217
bindEvents() {
219-
// 外部打开http
220-
if (semver.lt(process.versions.electron, '13.0.0')) {
221-
// Deprecated: WebContents new-window event
222-
// https://www.electronjs.org/docs/latest/breaking-changes#deprecated-webcontents-new-window-event
223-
this.browser.webContents.on('new-window', (event, url) => {
224-
if (!event.defaultPrevented) {
225-
event.preventDefault();
226-
if (url.indexOf('http') === 0) {
227-
shell.openExternal(url);
228-
}
229-
}
230-
});
231-
} else {
232-
this.browser.webContents.setWindowOpenHandler((details) => {
233-
if (details.url.indexOf('http') === 0) {
234-
shell.openExternal(details.url);
235-
}
236-
return { action: 'deny' };
237-
});
238-
}
218+
this.browser.webContents.setWindowOpenHandler((details) => {
219+
if (details.url.indexOf('http') === 0) {
220+
shell.openExternal(details.url);
221+
}
222+
return { action: 'deny' };
223+
});
239224
}
240225

241226
async clear() {

packages/startup/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
"@opensumi/ide-dev-tool": "workspace:*",
114114
"browserfs": "^1.4.3",
115115
"css-loader": "^2.1.1",
116-
"electron": "^18.3.0",
116+
"electron": "^22.3.21",
117117
"file-loader": "^3.0.1",
118118
"less-loader": "^6.0.0",
119119
"nodemon": "^2.0.15",

tools/electron/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"clean-webpack-plugin": "^3.0.0",
4949
"copy-webpack-plugin": "^5.0.3",
5050
"css-loader": "^2.1.1",
51-
"electron": "^18.3.0",
51+
"electron": "^22.3.21",
5252
"electron-builder": "^23.0.3",
5353
"file-loader": "^3.0.1",
5454
"friendly-errors-webpack-plugin": "^1.7.0",

0 commit comments

Comments
 (0)