It's permanent, if that wasn't obvious.
, confirmColor: Button.Colors.RED, confirmText: "Delete", onConfirm: () => GetPropsAndDeleteGuild(server.id), cancelText: "Cancel" }); - } else { - return GetPropsAndDeleteGuild(server.id); - } - }, - patches: [ - { - find: ".DELETE,onClick(){let", - replacement: { - match: /let\{name:\i\}=\i\.guild/, - replace: "$self.HandleGuildDeleteModal($1);$&" - } - } - ] -}); diff --git a/src/equicordplugins/noMirroredCamera/index.tsx b/src/equicordplugins/noMirroredCamera/index.tsx deleted file mode 100644 index 821c3efeb..000000000 --- a/src/equicordplugins/noMirroredCamera/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Vencord, a Discord client mod - * Copyright (c) 2024 Vendicated and contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -import { Devs } from "@utils/constants"; -import definePlugin from "@utils/types"; - -export default definePlugin({ - name: "NoMirroredCamera", - description: "Prevents the camera from being mirrored on your screen", - authors: [Devs.nyx], - - patches: [ - // When focused on voice channel or group chat voice call - { - find: /\i\?\i.\i.SELF_VIDEO/, - replacement: { - match: /mirror:\i/, - replace: "mirror:!1" - } - }, - // Popout camera when not focused on voice channel - { - find: ".mirror]:", - replacement: { - match: /\[(\i).mirror]:\i/, - replace: "[$1.mirror]:!1" - } - }, - // Overriding css on Preview Camera/Change Video Background popup - { - find: ".cameraPreview,", - replacement: { - match: /className:\i.camera,/, - replace: "$&style:{transform: \"scalex(1)\"}," - } - } - ] -}); diff --git a/src/equicordplugins/remix/index.tsx b/src/equicordplugins/remix/index.tsx index 13c2dbdca..c45a34b2c 100644 --- a/src/equicordplugins/remix/index.tsx +++ b/src/equicordplugins/remix/index.tsx @@ -5,7 +5,8 @@ */ import { findGroupChildrenByChildId, NavContextMenuPatchCallback } from "@api/ContextMenu"; -import { definePluginSettings } from "@api/Settings"; +import { addMessagePreSendListener, MessageSendListener, removeMessagePreSendListener } from "@api/MessageEvents"; +import { definePluginSettings, Settings } from "@api/Settings"; import { disableStyle, enableStyle } from "@api/Styles"; import { PaintbrushIcon } from "@components/Icons"; import { EquicordDevs } from "@utils/constants"; @@ -106,12 +107,20 @@ const settings = definePluginSettings({ type: OptionType.BOOLEAN, default: true, }, + remixMe: { + description: "Turns every single message with attachment to have remix tag", + type: OptionType.BOOLEAN, + default: false, + } }); +const handleMessage: MessageSendListener = (_, __, ex) => ex.uploads && ex.uploads.forEach(att => att.isRemix = true); + + export default definePlugin({ name: "Remix", description: "Adds Remix to Desktop", - authors: [EquicordDevs.MrDiamond], + authors: [EquicordDevs.MrDiamond, EquicordDevs.meowabyte], settings, contextMenus: { "channel-attach": UploadContextMenuPatch, @@ -124,9 +133,19 @@ export default definePlugin({ await requireSettingsMenu(); enableStyle(css); + if (Settings.plugins?.RemixMe?.enabled) { + Settings.plugins.RemixMe.enabled = false; + settings.store.remixMe = true; + } + if (settings.store.remixMe) { + addMessagePreSendListener(handleMessage); + } }, stop() { disableStyle(css); + if (settings.store.remixMe) { + removeMessagePreSendListener(handleMessage); + } }, }); diff --git a/src/equicordplugins/remixMe/index.tsx b/src/equicordplugins/remixMe/index.tsx deleted file mode 100644 index 08d4916ae..000000000 --- a/src/equicordplugins/remixMe/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Vencord, a Discord client mod - * Copyright (c) 2023 Vendicated and contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -import { addMessagePreSendListener, MessageSendListener, removeMessagePreSendListener } from "@api/MessageEvents"; -import { EquicordDevs } from "@utils/constants"; -import definePlugin from "@utils/types"; - -const handleMessage: MessageSendListener = (_, __, ex) => ex.uploads && ex.uploads.forEach(att => att.isRemix = true); - -export default definePlugin({ - name: "RemixMe", - description: "Turns every single message with attachment to have remix tag", - authors: [EquicordDevs.meowabyte], - start() { - addMessagePreSendListener(handleMessage); - }, - stop() { - removeMessagePreSendListener(handleMessage); - } -}); diff --git a/src/equicordplugins/animalese/index.ts b/src/equicordplugins/soundTroll/animalese.ts similarity index 50% rename from src/equicordplugins/animalese/index.ts rename to src/equicordplugins/soundTroll/animalese.ts index 265c2e0d6..1def30cc4 100644 --- a/src/equicordplugins/animalese/index.ts +++ b/src/equicordplugins/soundTroll/animalese.ts @@ -1,80 +1,38 @@ /* * Vencord, a Discord client mod - * Copyright (c) 2024 Vendicated and contributors + * Copyright (c) 2025 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ -import { definePluginSettings } from "@api/Settings"; -import { EquicordDevs } from "@utils/constants"; -import definePlugin, { OptionType } from "@utils/types"; -import { SelectedChannelStore, UserStore } from "@webpack/common"; +import { settings } from "./settings"; -const settings = definePluginSettings({ - volume: { - type: OptionType.SLIDER, - description: "Volume of the animalese sound", - default: 0.5, - markers: [0, 0.1, 0.25, 0.5, 0.6, 0.75, 1], - }, - speed: { - type: OptionType.SLIDER, - description: "Speed of the animalese sound", - default: 1, - markers: [0.5, 0.75, 1, 1.25, 1.5], - }, - pitch: { - type: OptionType.SLIDER, - description: "Pitch multiplier", - default: 1, - markers: [0.75, 0.8, 0.85, 1, 1.15, 1.25, 1.35, 1.5], - }, - messageLengthLimit: { - type: OptionType.NUMBER, - description: "Maximum length of message to process", - default: 50, - }, - processOwnMessages: { - type: OptionType.BOOLEAN, - description: "Enable to yap your own messages too", - default: true, - }, - soundQuality: { - type: OptionType.SELECT, - description: "Quality of sound to use", - options: [ - { - label: "High", - value: "high", - default: true - }, - { - label: "Medium", - value: "med" - }, - { - label: "Low", - value: "low" - }, - { - label: "Lowest", - value: "low" - } - ] +export let audioContext: AudioContext | null = null; + +export async function init() { + if (!audioContext) { + audioContext = new AudioContext(); + await initSoundBuffers(); } -}); + init(); +} -let audioContext: AudioContext | null = null; +export async function kill() { + if (audioContext) { + audioContext.close(); + audioContext = null; + } +} // better than my old hardcoded garbage -const highSounds = Array.from( +export const highSounds = Array.from( { length: 30 }, (_, i) => `sound${String(i + 1).padStart(2, "0")}.wav` ); -const soundBuffers: RecordIt's permanent, if that wasn't obvious.
, + confirmColor: Button.Colors.RED, + confirmText: "Delete", + onConfirm: () => GetPropsAndDeleteGuild(server.id), + cancelText: "Cancel" + }); + } else { + return GetPropsAndDeleteGuild(server.id); + } + }, });