diff --git a/src/renderer/components/ScreenSharePicker.tsx b/src/renderer/components/ScreenSharePicker.tsx index 26e8b1b..69d8d63 100644 --- a/src/renderer/components/ScreenSharePicker.tsx +++ b/src/renderer/components/ScreenSharePicker.tsx @@ -8,7 +8,6 @@ import "./screenSharePicker.css"; import { classNameFactory } from "@vencord/types/api/Styles"; import { - BaseText, Button, Card, CogWheel, @@ -20,18 +19,18 @@ import { RestartIcon, Span } from "@vencord/types/components"; +import { Logger, useAwaiter, useForceUpdater } from "@vencord/types/utils"; +import { onceReady } from "@vencord/types/webpack"; import { closeModal, - Logger, - ModalCloseButton, - Modals, - ModalSize, + FluxDispatcher, + MediaEngineStore, + Modal, openModal, - useAwaiter, - useForceUpdater -} from "@vencord/types/utils"; -import { onceReady } from "@vencord/types/webpack"; -import { FluxDispatcher, MediaEngineStore, Select, UserStore, useState } from "@vencord/types/webpack/common"; + Select, + UserStore, + useState +} from "@vencord/types/webpack/common"; import { Node } from "@vencord/venmic"; import type { Dispatch, SetStateAction } from "react"; import { addPatch } from "renderer/patches/shared"; @@ -220,15 +219,13 @@ function AudioSettingsModal({ const Settings = useSettings(); return ( - - - - Audio Settings - - - - - + +
- - - - - +
+
); } @@ -723,101 +715,91 @@ function ModalComponent({ frameRate: "30" }); + function handleGoLive() { + currentSettings = settings; + try { + const frameRate = Number(qualitySettings.frameRate); + const height = Number(qualitySettings.resolution); + const width = Math.round(height * (16 / 9)); + + const conn = [...MediaEngineStore.getMediaEngine().connections].find( + connection => connection.streamUserId === UserStore.getCurrentUser().id + ); + + if (conn) { + conn.videoStreamParameters[0].maxFrameRate = frameRate; + conn.videoStreamParameters[0].maxResolution ??= { width: 0, height: 0 }; + conn.videoStreamParameters[0].maxResolution.height = height; + conn.videoStreamParameters[0].maxResolution.width = width; + } + + submit({ + id: selected!, + ...settings + }); + + setTimeout(async () => { + const conn = [...MediaEngineStore.getMediaEngine().connections].find( + connection => connection.streamUserId === UserStore.getCurrentUser().id + ); + if (!conn) return; + + // @ts-expect-error incorrect type + const track = conn.input.stream.getVideoTracks()[0]; + + const constraints = { + ...track.getConstraints(), + frameRate: { min: frameRate, ideal: frameRate }, + width: { min: 640, ideal: width, max: width }, + height: { min: 480, ideal: height, max: height }, + advanced: [{ width: width, height: height }], + resizeMode: "none" + }; + + try { + await track.applyConstraints(constraints); + + logger.info("Applied constraints successfully. New constraints:", track.getConstraints()); + } catch (e) { + logger.error("Failed to apply constraints.", e); + } + }, 100); + } catch (error) { + logger.error("Error while submitting stream.", error); + } + + close(); + } + + const showGoBack = selected && !skipPicker; return ( - - - - Screen Share Picker - - - - - {!selected ? ( - - ) : ( - s.id === selected)!} - settings={settings} - setSettings={setSettings} - skipPicker={skipPicker} - /> - )} - - - - - {selected && !skipPicker ? ( - - ) : ( - - )} - - + (showGoBack ? setSelected(void 0) : close()) + }, + { + text: "Go Live", + disabled: !selected, + onClick: handleGoLive + } + ]} + > + {!selected ? ( + + ) : ( + s.id === selected)!} + settings={settings} + setSettings={setSettings} + skipPicker={skipPicker} + /> + )} + ); } diff --git a/src/renderer/components/screenSharePicker.css b/src/renderer/components/screenSharePicker.css index c00c622..d221c8d 100644 --- a/src/renderer/components/screenSharePicker.css +++ b/src/renderer/components/screenSharePicker.css @@ -1,7 +1,3 @@ -.vcd-screen-picker-modal { - padding: 1em; -} - .vcd-screen-picker-header-close-button { margin-left: auto; } diff --git a/src/renderer/components/settings/DeveloperOptions.tsx b/src/renderer/components/settings/DeveloperOptions.tsx index 87c69a8..4ed5feb 100644 --- a/src/renderer/components/settings/DeveloperOptions.tsx +++ b/src/renderer/components/settings/DeveloperOptions.tsx @@ -4,18 +4,9 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { BaseText, Button, Heading, Paragraph, TextButton } from "@vencord/types/components"; -import { - Margins, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalRoot, - ModalSize, - openModal, - useForceUpdater -} from "@vencord/types/utils"; -import { Toasts } from "@vencord/types/webpack/common"; +import { Button, Heading, Paragraph, TextButton } from "@vencord/types/components"; +import { Margins, useForceUpdater } from "@vencord/types/utils"; +import { Modal, openModal, Toasts } from "@vencord/types/webpack/common"; import { Settings } from "shared/settings"; import { cl, SettingsComponent } from "./Settings"; @@ -26,31 +17,20 @@ export const DeveloperOptionsButton: SettingsComponent = ({ settings }) => { function openDeveloperOptionsModal(settings: Settings) { openModal(props => ( - - - - Vesktop Developer Options - - - + + Vencord Location + - -
- Vencord Location - - - - Debugging - -
- - -
-
-
-
+ + Debugging + +
+ + +
+ )); } diff --git a/src/renderer/components/settings/UserAssets.tsx b/src/renderer/components/settings/UserAssets.tsx index 71033f3..aac6b61 100644 --- a/src/renderer/components/settings/UserAssets.tsx +++ b/src/renderer/components/settings/UserAssets.tsx @@ -7,18 +7,8 @@ import "./UserAssets.css"; import { BaseText, Button, FormSwitch } from "@vencord/types/components"; -import { - Margins, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalRoot, - ModalSize, - openModal, - wordsFromCamel, - wordsToTitle -} from "@vencord/types/utils"; -import { showToast, useState } from "@vencord/types/webpack/common"; +import { Margins, wordsFromCamel, wordsToTitle } from "@vencord/types/utils"; +import { Modal, openModal, showToast, useState } from "@vencord/types/webpack/common"; import { UserAssetType } from "main/userAssets"; import { useSettings } from "renderer/settings"; @@ -32,22 +22,13 @@ export const UserAssetsButton: SettingsComponent = () => { function openAssetsModal() { openModal(props => ( - - - - User Assets - - - - - -
- {CUSTOMIZABLE_ASSETS.map(asset => ( - - ))} -
-
-
+ +
+ {CUSTOMIZABLE_ASSETS.map(asset => ( + + ))} +
+
)); }