diff --git a/src/main/views/webContentEvents.ts b/src/main/views/webContentEvents.ts index bfa6e7fe..235bf076 100644 --- a/src/main/views/webContentEvents.ts +++ b/src/main/views/webContentEvents.ts @@ -28,7 +28,7 @@ import ViewManager from 'main/views/viewManager'; import CallsWidgetWindow from 'main/windows/callsWidgetWindow'; import MainWindow from 'main/windows/mainWindow'; -import {generateHandleConsoleMessage, isCustomProtocol} from './webContentEventsCommon'; +import {generateHandleConsoleMessage, isCustomProtocol, isMattermostProtocol} from './webContentEventsCommon'; import allowProtocolDialog from '../allowProtocolDialog'; import {composeUserAgent} from '../utils'; @@ -131,7 +131,13 @@ export class WebContentsEventManager { return PluginsPopUpsManager.handleNewWindow(webContentsId, details); } - // Check for custom protocol + // Check for mattermost protocol - handle internally + if (isMattermostProtocol(parsedURL)) { + ViewManager.handleDeepLink(parsedURL); + return {action: 'deny'}; + } + + // Check for other custom protocols if (isCustomProtocol(parsedURL)) { allowProtocolDialog.handleDialogEvent(parsedURL.protocol, details.url); return {action: 'deny'}; diff --git a/src/main/views/webContentEventsCommon.ts b/src/main/views/webContentEventsCommon.ts index 5a5039b3..fa080fb1 100644 --- a/src/main/views/webContentEventsCommon.ts +++ b/src/main/views/webContentEventsCommon.ts @@ -34,3 +34,8 @@ export function isCustomProtocol(url: URL) { const scheme = protocols && protocols[0] && protocols[0].schemes && protocols[0].schemes[0]; return url.protocol !== 'http:' && url.protocol !== 'https:' && url.protocol !== `${scheme}:`; } + +export function isMattermostProtocol(url: URL) { + const scheme = protocols && protocols[0] && protocols[0].schemes && protocols[0].schemes[0]; + return url.protocol === `${scheme}:`; +}