diff --git a/src/renderer/patches/hideSwitchDevice.tsx b/src/renderer/patches/hideSwitchDevice.tsx new file mode 100644 index 0000000..5c87d28 --- /dev/null +++ b/src/renderer/patches/hideSwitchDevice.tsx @@ -0,0 +1,23 @@ +/* + * SPDX-License-Identifier: GPL-3.0 + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + */ + +import { addPatch } from "./shared"; + +addPatch({ + patches: [ + { + find: "lastOutputSystemDevice.justChanged", + replacement: { + match: /((\w)\.default\.getState\(\).neverShowModal)/, + replace: "$1 || $self.shouldIgnore($2)" + } + } + ], + + shouldIgnore(state: any) { + return Object.keys(state?.default?.lastDeviceConnected)?.[0] === "vencord-screen-share"; + } +}); diff --git a/src/renderer/patches/index.ts b/src/renderer/patches/index.ts index 7d4c4b3..0c14b96 100644 --- a/src/renderer/patches/index.ts +++ b/src/renderer/patches/index.ts @@ -7,6 +7,7 @@ // TODO: Possibly auto generate glob if we have more patches in the future import "./enableNotificationsByDefault"; import "./platformClass"; +import "./hideSwitchDevice"; import "./screenShareAudio"; import "./spellCheck"; import "./windowsTitleBar"; diff --git a/src/renderer/patches/screenShareAudio.ts b/src/renderer/patches/screenShareAudio.ts index 3b926c3..610d837 100644 --- a/src/renderer/patches/screenShareAudio.ts +++ b/src/renderer/patches/screenShareAudio.ts @@ -7,11 +7,12 @@ import { isLinux } from "renderer/utils"; if (isLinux) { - const original = navigator.mediaDevices.getDisplayMedia; + const originalMedia = navigator.mediaDevices.getDisplayMedia; + const originalDevices = navigator.mediaDevices.enumerateDevices; async function getVirtmic() { try { - const devices = await navigator.mediaDevices.enumerateDevices(); + const devices = await originalDevices(); const audioDevice = devices.find(({ label }) => label === "vencord-screen-share"); return audioDevice?.deviceId; } catch (error) { @@ -19,8 +20,13 @@ if (isLinux) { } } + navigator.mediaDevices.enumerateDevices = async function () { + const result = await originalDevices.call(this); + return result.filter(x => x.label !== "vencord-screen-share"); + }; + navigator.mediaDevices.getDisplayMedia = async function (opts) { - const stream = await original.call(this, opts); + const stream = await originalMedia.call(this, opts); const id = await getVirtmic(); if (id) {