From 2733727a40a4cf542277dedcf89e87e7740f962d Mon Sep 17 00:00:00 2001 From: Noah <37805707+Curve@users.noreply.github.com> Date: Sun, 21 Apr 2024 19:31:14 +0200 Subject: [PATCH] fix regression breaking venmic (#531) --- src/renderer/patches/hideVenmicInput.tsx | 25 ++++++++++++++++++++++++ src/renderer/patches/index.ts | 1 + src/renderer/patches/screenShareFixes.ts | 12 +++--------- 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 src/renderer/patches/hideVenmicInput.tsx diff --git a/src/renderer/patches/hideVenmicInput.tsx b/src/renderer/patches/hideVenmicInput.tsx new file mode 100644 index 0000000..ca706ce --- /dev/null +++ b/src/renderer/patches/hideVenmicInput.tsx @@ -0,0 +1,25 @@ +/* + * 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: 'setSinkId"in', + replacement: { + // eslint-disable-next-line no-useless-escape + match: /return (\i)\?navigator\.mediaDevices\.enumerateDevices/, + replace: "return $1 ? $self.filteredDevices" + } + } + ], + + async filteredDevices() { + const original = await navigator.mediaDevices.enumerateDevices(); + return original.filter(x => x.label !== "vencord-screen-share"); + } +}); diff --git a/src/renderer/patches/index.ts b/src/renderer/patches/index.ts index c243b14..aabff3e 100644 --- a/src/renderer/patches/index.ts +++ b/src/renderer/patches/index.ts @@ -8,6 +8,7 @@ import "./enableNotificationsByDefault"; import "./platformClass"; import "./hideSwitchDevice"; +import "./hideVenmicInput"; import "./screenShareFixes"; import "./spellCheck"; import "./windowsTitleBar"; diff --git a/src/renderer/patches/screenShareFixes.ts b/src/renderer/patches/screenShareFixes.ts index 61973a0..66e4b14 100644 --- a/src/renderer/patches/screenShareFixes.ts +++ b/src/renderer/patches/screenShareFixes.ts @@ -11,12 +11,11 @@ import { isLinux } from "renderer/utils"; const logger = new Logger("VesktopStreamFixes"); if (isLinux) { - const originalMedia = navigator.mediaDevices.getDisplayMedia; - const originalDevices = navigator.mediaDevices.enumerateDevices; + const original = navigator.mediaDevices.getDisplayMedia; async function getVirtmic() { try { - const devices = await originalDevices(); + const devices = await navigator.mediaDevices.enumerateDevices(); const audioDevice = devices.find(({ label }) => label === "vencord-screen-share"); return audioDevice?.deviceId; } catch (error) { @@ -24,13 +23,8 @@ 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 originalMedia.call(this, opts); + const stream = await original.call(this, opts); const id = await getVirtmic(); const frameRate = Number(currentSettings?.fps);