diff --git a/package.json b/package.json index 8cc3ac6..b527fdf 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@stylistic/eslint-plugin": "^5.6.1", "@types/node": "^24.10.1", "@types/react": "19.2.1", - "@vencord/types": "^1.13.2", + "@vencord/types": "^1.13.7", "dotenv": "^17.2.3", "electron": "^39.2.3", "electron-builder": "^26.0.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4aa1db1..12075ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: 19.2.1 version: 19.2.1 '@vencord/types': - specifier: ^1.13.2 - version: 1.13.2(@types/react-dom@18.3.1)(@types/react@19.2.1) + specifier: ^1.13.7 + version: 1.13.7(@types/react-dom@18.3.1)(@types/react@19.2.1) dotenv: specifier: ^17.2.3 version: 17.2.3 @@ -629,6 +629,9 @@ packages: '@types/node@22.19.1': resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} + '@types/node@22.19.2': + resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} + '@types/node@24.10.1': resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} @@ -714,8 +717,8 @@ packages: peerDependencies: '@types/react': ^19.0.10 - '@vencord/types@1.13.2': - resolution: {integrity: sha512-5RifSCC1X4xzoNaDTMANRLVZreEsHWWsGs6iBooqnBkLeigfP7FqAQfn6onogk/2+YQKNMTQT8N+MD+HGes5EA==} + '@vencord/types@1.13.7': + resolution: {integrity: sha512-MThrBwMEJ0CvKMrVgJC4cvJuDwwFXEhgSOJnmDZxmJeKOByVWLo7xxjn1suHkE1/euw9J5lGTfz1QTiYVXbLqA==} peerDependencies: '@types/react': 18.3.1 '@types/react-dom': 18.3.1 @@ -2983,8 +2986,8 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-pattern@5.8.0: - resolution: {integrity: sha512-kIjN2qmWiHnhgr5DAkAafF9fwb0T5OhMVSWrm8XEdTFnX6+wfXwYOFjeF86UZ54vduqiR7BfqScFmXSzSaH8oA==} + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -3236,7 +3239,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.3 + semver: 7.7.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3574,7 +3577,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.3 + semver: 7.7.2 '@npmcli/move-file@2.0.1': dependencies: @@ -3641,6 +3644,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@22.19.2': + dependencies: + undici-types: 6.21.0 + '@types/node@24.10.1': dependencies: undici-types: 7.16.0 @@ -3770,16 +3777,16 @@ snapshots: moment: 2.30.1 type-fest: 4.41.0 - '@vencord/types@1.13.2(@types/react-dom@18.3.1)(@types/react@19.2.1)': + '@vencord/types@1.13.7(@types/react-dom@18.3.1)(@types/react@19.2.1)': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.19.1 + '@types/node': 22.19.2 '@types/react': 19.2.1 '@types/react-dom': 18.3.1 '@vencord/discord-types': 1.0.0(@types/react@19.2.1) highlight.js: 11.11.1 moment: 2.30.1 - ts-pattern: 5.8.0 + ts-pattern: 5.9.0 type-fest: 4.41.0 '@vencord/venmic@6.1.0': @@ -6597,7 +6604,7 @@ snapshots: dependencies: typescript: 5.9.3 - ts-pattern@5.8.0: {} + ts-pattern@5.9.0: {} tsconfig-paths@3.15.0: dependencies: diff --git a/src/renderer/components/ScreenSharePicker.tsx b/src/renderer/components/ScreenSharePicker.tsx index bbee49c..dab9c3e 100644 --- a/src/renderer/components/ScreenSharePicker.tsx +++ b/src/renderer/components/ScreenSharePicker.tsx @@ -7,10 +7,31 @@ import "./screenSharePicker.css"; import { classNameFactory } from "@vencord/types/api/Styles"; -import { CogWheel, FormSwitch, RestartIcon } from "@vencord/types/components"; -import { closeModal, Logger, Modals, ModalSize, openModal, useAwaiter, useForceUpdater } from "@vencord/types/utils"; +import { + BaseText, + Button, + Card, + CogWheel, + FormSwitch, + Heading, + HeadingTertiary, + Margins, + Paragraph, + RestartIcon, + Span +} from "@vencord/types/components"; +import { + closeModal, + Logger, + ModalCloseButton, + Modals, + ModalSize, + openModal, + useAwaiter, + useForceUpdater +} from "@vencord/types/utils"; import { onceReady } from "@vencord/types/webpack"; -import { Button, Card, FluxDispatcher, Forms, Select, Text, UserStore, useState } from "@vencord/types/webpack/common"; +import { FluxDispatcher, Select, UserStore, useState } from "@vencord/types/webpack/common"; import { Node } from "@vencord/venmic"; import type { Dispatch, SetStateAction } from "react"; import { MediaEngineStore } from "renderer/common"; @@ -18,6 +39,8 @@ import { addPatch } from "renderer/patches/shared"; import { State, useSettings, useVesktopState } from "renderer/settings"; import { isLinux, isWindows } from "renderer/utils"; +import { SimpleErrorBoundary } from "./SimpleErrorBoundary"; + const StreamResolutions = ["480", "720", "1080", "1440", "2160"] as const; const StreamFps = ["15", "30", "60"] as const; @@ -145,6 +168,9 @@ export function openScreenSharePicker(screens: Source[], skipPicker: boolean) { onCloseRequest() { closeModal(key); reject("Aborted"); + }, + onCloseCallback() { + reject("Aborted"); } } ); @@ -165,9 +191,7 @@ function ScreenPicker({ screens, chooseScreen }: { screens: Source[]; chooseScre /> - - {name} - + {name} ))} @@ -188,19 +212,16 @@ function AudioSettingsModal({ return ( - Venmic Settings - + + Audio Settings + + - Work around an issue that causes the microphone to be shared instead of the correct audio. - Only enable if you're experiencing this issue. - - } + description="Work around an issue that causes the microphone to be shared instead of the correct audio. Only enable if you're experiencing this issue." hideBorder onChange={v => (Settings.audio = { ...Settings.audio, workaround: v })} value={Settings.audio?.workaround ?? false} @@ -208,10 +229,7 @@ function AudioSettingsModal({ - When sharing entire desktop audio, only share apps that play to a speaker. You may want to - disable this when using "mix bussing". - + 'When sharing entire desktop audio, only share apps that play to a speaker. You may want to disable this when using "mix bussing".' } hideBorder onChange={v => (Settings.audio = { ...Settings.audio, onlySpeakers: v })} @@ -231,7 +249,7 @@ function AudioSettingsModal({ /> Exclude nodes that are intended to capture audio.} + description="Exclude nodes that are intended to capture audio." hideBorder onChange={v => (Settings.audio = { ...Settings.audio, ignoreInputMedia: v })} value={Settings.audio?.ignoreInputMedia ?? true} @@ -239,10 +257,7 @@ function AudioSettingsModal({ - Exclude virtual nodes, such as nodes belonging to loopbacks. This might be useful when using - "mix bussing". - + 'Exclude virtual nodes, such as nodes belonging to loopbacks. This might be useful when using "mix bussing".' } hideBorder onChange={v => (Settings.audio = { ...Settings.audio, ignoreVirtual: v })} @@ -250,7 +265,7 @@ function AudioSettingsModal({ /> Exclude device nodes, such as nodes belonging to microphones or speakers.} + description="Exclude device nodes, such as nodes belonging to microphones or speakers." hideBorder onChange={v => (Settings.audio = { @@ -263,7 +278,7 @@ function AudioSettingsModal({ /> Allow to select applications more granularly.} + description="Allow to select applications more granularly." hideBorder onChange={value => { Settings.audio = { ...Settings.audio, granularSelect: value }; @@ -289,7 +304,7 @@ function AudioSettingsModal({ /> - @@ -310,7 +325,7 @@ function OptionRadio(props:
{(options as string[]).map((option, idx) => (