Plugin
SSSMode
Automatically enables streamer mode while screen sharing
1
/*2
* FiveCord — a Discord client mod3
* Copyright (c) 2025 FiveCord4
* SPDX-License-Identifier: GPL-3.0-or-later5
*/6
7
import { Devs } from "@utils/constants";8
import definePlugin from "@utils/types";9
import { findByPropsLazy } from "@webpack";10
import { UserStore } from "@webpack/common";11
12
interface StreamEvent {13
streamKey: string;14
}15
16
interface StreamCreateEvent extends StreamEvent {17
type: "STREAM_CREATE";18
region: string;19
viewerIds: string[];20
rtcServerId: string;21
paused: boolean;22
}23
24
interface StreamCloseEvent extends StreamEvent {25
type: "STREAM_CLOSE";26
streamKey: string;27
canShowFeedback: boolean;28
}29
30
interface StreamerModeSettings {31
enabled: boolean;32
autoToggle: boolean;33
hideInstantInvites: boolean;34
hidePersonalInformation: boolean;35
disableSounds: boolean;36
disableNotifications: boolean;37
enableContentProtection: boolean;38
}39
40
const StreamerModeActions: {41
setEnabled(enabled: boolean): void;42
update(settings: StreamerModeSettings): void;43
} = findByPropsLazy("setEnabled", "update");44
45
function isSelf(streamKey: string) {46
return streamKey.split(":").at(-1) === UserStore.getCurrentUser().id;47
}48
49
export 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