diff --git a/app/renderer/js/components/handle-external-link.ts b/app/renderer/js/components/handle-external-link.ts index fb57894c..2add473a 100644 --- a/app/renderer/js/components/handle-external-link.ts +++ b/app/renderer/js/components/handle-external-link.ts @@ -10,11 +10,9 @@ const dingSound = new Audio("../resources/sounds/ding.ogg"); export default function handleExternalLink( this: WebView, - event: Electron.NewWindowEvent, + details: Electron.HandlerDetails, ): void { - event.preventDefault(); - - const url = new URL(event.url); + const url = new URL(details.url); const downloadPath = ConfigUtil.getConfigItem( "downloadsPath", `${app.getPath("downloads")}`, diff --git a/app/renderer/js/components/webview.ts b/app/renderer/js/components/webview.ts index b64b0e4b..2863267f 100644 --- a/app/renderer/js/components/webview.ts +++ b/app/renderer/js/components/webview.ts @@ -130,16 +130,18 @@ export default class WebView { } registerListeners(): void { - this.$el.addEventListener("new-window", (event) => { - handleExternalLink.call(this, event); + const webContents = this.getWebContents(); + + webContents.setWindowOpenHandler((details) => { + handleExternalLink.call(this, details); + return {action: "deny"}; }); if (shouldSilentWebview) { - this.getWebContents().setAudioMuted(true); + webContents.setAudioMuted(true); } - this.$el.addEventListener("page-title-updated", (event) => { - const {title} = event; + webContents.on("page-title-updated", (_event, title) => { this.badgeCount = this.getBadgeCount(title); this.props.onTitleChange(); }); @@ -152,9 +154,7 @@ export default class WebView { this.canGoBackButton(); }); - this.$el.addEventListener("page-favicon-updated", (event) => { - const {favicons} = event; - + webContents.on("page-favicon-updated", (_event, favicons) => { // This returns a string of favicons URL. If there is a PM counts in unread messages then the URL would be like // https://chat.zulip.org/static/images/favicon/favicon-pms.png if ( @@ -170,7 +170,6 @@ export default class WebView { } }); - const webContents = this.getWebContents(); webContents.addListener("context-menu", (event, menuParameters) => { contextMenu(webContents, event, menuParameters); }); @@ -181,8 +180,7 @@ export default class WebView { this.show(); }); - this.$el.addEventListener("did-fail-load", (event) => { - const {errorDescription} = event; + webContents.on("did-fail-load", (_event, _errorCode, errorDescription) => { const hasConnectivityError = SystemUtil.connectivityERR.includes(errorDescription); if (hasConnectivityError) {