Switch to IPC channel for `getDesktopCapturerSources` (#7782)

pull/21833/head
Šimon Brandner 2022-02-11 11:41:15 +01:00 committed by GitHub
parent c3bb8cf3ef
commit 73899bb2e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 7 deletions

View File

@ -109,7 +109,7 @@ declare global {
mxActiveWidgetStore?: ActiveWidgetStore;
mxSkinner?: Skinner;
mxOnRecaptchaLoaded?: () => void;
electron?: Electron;
electron?: unknown;
mxSendSentryReport: (userText: string, issueUrl: string, error: Error) => Promise<void>;
mxLoginWithAccessToken: (hsUrl: string, accessToken: string) => Promise<void>;
mxAutoRageshakeStore?: AutoRageshakeStore;
@ -130,10 +130,6 @@ declare global {
fetchWindowIcons?: boolean;
}
interface Electron {
getDesktopCapturerSources(options: GetSourcesOptions): Promise<Array<DesktopCapturerSource>>;
}
interface Document {
// Safari & IE11 only have this prefixed: we used prefixed versions
// previously so let's continue to support them for now

View File

@ -301,6 +301,14 @@ export default abstract class BasePlatform {
return null;
}
async getDesktopCapturerSources(options: GetSourcesOptions): Promise<Array<DesktopCapturerSource>> {
return [];
}
supportsDesktopCapturer(): boolean {
return false;
}
getAvailableSpellCheckLanguages(): Promise<string[]> | null {
return null;
}

View File

@ -23,6 +23,7 @@ import DialogButtons from "./DialogButtons";
import AccessibleButton from './AccessibleButton';
import { replaceableComponent } from "../../../utils/replaceableComponent";
import TabbedView, { Tab, TabLocation } from '../../structures/TabbedView';
import PlatformPeg from "../../../PlatformPeg";
export function getDesktopCapturerSources(): Promise<Array<DesktopCapturerSource>> {
const options: GetSourcesOptions = {
@ -35,7 +36,7 @@ export function getDesktopCapturerSources(): Promise<Array<DesktopCapturerSource
"window",
],
};
return window.electron.getDesktopCapturerSources(options);
return PlatformPeg.get().getDesktopCapturerSources(options);
}
export enum Tabs {

View File

@ -37,6 +37,7 @@ import Modal from '../../../Modal';
import CallViewSidebar from './CallViewSidebar';
import CallViewHeader from './CallView/CallViewHeader';
import CallViewButtons from "./CallView/CallViewButtons";
import PlatformPeg from "../../../PlatformPeg";
interface IProps {
// The call for us to display
@ -270,7 +271,7 @@ export default class CallView extends React.Component<IProps, IState> {
if (this.state.screensharing) {
isScreensharing = await this.props.call.setScreensharingEnabled(false);
} else {
if (window.electron?.getDesktopCapturerSources) {
if (PlatformPeg.get().supportsDesktopCapturer()) {
const { finished } = Modal.createDialog(DesktopCapturerSourcePicker);
const [source] = await finished;
if (!source) return;