Plugin

SSSMode

Automatically enables streamer mode while screen sharing

index.ts
Download

Source

src/plugins/screenShareStreamerMode/index.ts
1/*
2 * FiveCord — a Discord client mod
3 * Copyright (c) 2025 FiveCord
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7import { Devs } from "@utils/constants";
8import definePlugin from "@utils/types";
9import { findByPropsLazy } from "@webpack";
10import { UserStore } from "@webpack/common";
11
12interface StreamEvent {
13 streamKey: string;
14}
15
16interface StreamCreateEvent extends StreamEvent {
17 type: "STREAM_CREATE";
18 region: string;
19 viewerIds: string[];
20 rtcServerId: string;
21 paused: boolean;
22}
23
24interface StreamCloseEvent extends StreamEvent {
25 type: "STREAM_CLOSE";
26 streamKey: string;
27 canShowFeedback: boolean;
28}
29
30interface StreamerModeSettings {
31 enabled: boolean;
32 autoToggle: boolean;
33 hideInstantInvites: boolean;
34 hidePersonalInformation: boolean;
35 disableSounds: boolean;
36 disableNotifications: boolean;
37 enableContentProtection: boolean;
38}
39
40const StreamerModeActions: {
41 setEnabled(enabled: boolean): void;
42 update(settings: StreamerModeSettings): void;
43} = findByPropsLazy("setEnabled", "update");
44
45function isSelf(streamKey: string) {
46 return streamKey.split(":").at(-1) === UserStore.getCurrentUser().id;
47}
48
49export default definePlugin({
50 name: "SSSMode",
51 description: "Automatically enables streamer mode while screen sharing",
52 authors: [Devs.FiveCord],
53
54 flux: {
55 STREAM_CREATE({ streamKey }: StreamCreateEvent) {
56 if (isSelf(streamKey)) {
57 StreamerModeActions.setEnabled(true);
58 }
59 },
60 STREAM_CLOSE({ streamKey }: StreamCloseEvent) {
61 if (isSelf(streamKey)) {
62 StreamerModeActions.setEnabled(false);
63 }
64 },
65 }
66});
67