diff --git a/src/app/chrome-flags.ts b/src/app/chrome-flags.ts index 2a676e067..d4610915d 100644 --- a/src/app/chrome-flags.ts +++ b/src/app/chrome-flags.ts @@ -115,14 +115,15 @@ export const setChromeFlags = () => { export const setSessionProperties = () => { logger.info(`chrome-flags: Settings session properties`); const { customFlags } = config.getConfigFields(['customFlags']) as IConfig; + const { defaultSession } = session; if ( - session.defaultSession && + defaultSession && customFlags && customFlags.authServerWhitelist && customFlags.authServerWhitelist !== '' ) { - session.defaultSession.allowNTLMCredentialsForDomains( + defaultSession.allowNTLMCredentialsForDomains( customFlags.authServerWhitelist, ); } diff --git a/src/app/display-media-request-handler.ts b/src/app/display-media-request-handler.ts new file mode 100644 index 000000000..70231ea92 --- /dev/null +++ b/src/app/display-media-request-handler.ts @@ -0,0 +1,20 @@ +import { session } from 'electron'; + +/** + * This is currently supported only on macOS 15+. + * setDisplayMediaRequestHandler injects into navigator.mediaDevices.getDisplayMedia(). + * With the macOS-only option { useSystemPicker: true }, + * everyting is handled natively by the OS. + * + * For all other OSes and versions, the regular screen share flow will be used. + */ +export const setDisplayMediaRequestHandler = () => { + const { defaultSession } = session; + + defaultSession.setDisplayMediaRequestHandler( + async (_request, _callback) => { + // TODO - Add support for Windows. + }, + { useSystemPicker: true }, + ); +}; diff --git a/src/app/main.ts b/src/app/main.ts index 8726b5241..5d884cbb5 100644 --- a/src/app/main.ts +++ b/src/app/main.ts @@ -8,6 +8,7 @@ import { cleanUpAppCache, createAppCacheFile } from './app-cache-handler'; import { setChromeFlags, setSessionProperties } from './chrome-flags'; import { config } from './config-handler'; import './dialog-handler'; +import { setDisplayMediaRequestHandler } from './display-media-request-handler'; import './main-api-handler'; import { handlePerformanceSettings } from './perf-handler'; import { protocolHandler } from './protocol-handler'; @@ -108,6 +109,7 @@ const startApplication = async () => { // Picks global config values and updates them in the user config await config.updateUserConfigOnStart(); setSessionProperties(); + setDisplayMediaRequestHandler(); await autoUpdate.init(); await windowHandler.createApplication(); logger.info(`main: created application`);