diff --git a/src/main/screenShare.ts b/src/main/screenShare.ts index 41ee02c..505a2fd 100644 --- a/src/main/screenShare.ts +++ b/src/main/screenShare.ts @@ -52,9 +52,12 @@ export function registerScreenShareHandler() { if (isWayland) { const video = data[0]; if (video) - await request.frame.executeJavaScript( - `Vesktop.Components.ScreenShare.openScreenSharePicker(${JSON.stringify([video])}, true)` - ); + var stream = await request.frame + .executeJavaScript( + `Vesktop.Components.ScreenShare.openScreenSharePicker(${JSON.stringify([video])}, true)` + ) + .catch(() => null); + if (stream === null) return callback({}); callback(video ? { video: sources[0] } : {}); return; @@ -71,6 +74,7 @@ export function registerScreenShareHandler() { if (!choice) return callback({}); const source = sources.find(s => s.id === choice.id); + if (!source) return callback({}); const streams: Streams = { diff --git a/src/renderer/components/ScreenSharePicker.tsx b/src/renderer/components/ScreenSharePicker.tsx index fc0cd0c..a6d0326 100644 --- a/src/renderer/components/ScreenSharePicker.tsx +++ b/src/renderer/components/ScreenSharePicker.tsx @@ -71,7 +71,7 @@ addPatch({ } }); -export function openScreenSharePicker(screens: Source[], skipPicker: boolean) { +export async function openScreenSharePicker(screens: Source[], skipPicker: boolean) { let didSubmit = false; return new Promise((resolve, reject) => { const key = openModal( @@ -98,7 +98,7 @@ export function openScreenSharePicker(screens: Source[], skipPicker: boolean) { } } ); - }); + }).catch(null); } function ScreenPicker({ screens, chooseScreen }: { screens: Source[]; chooseScreen: (id: string) => void }) {