/* * Vencord, a Discord client mod * Copyright (c) 2024 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { ChatBarButton } from "@api/ChatButtons"; import { definePluginSettings } from "@api/Settings"; import { EquicordDevs } from "@utils/constants"; import definePlugin, { OptionType, StartAt } from "@utils/types"; import { useEffect, useState } from "@webpack/common"; import type { MouseEventHandler, ReactNode } from "react"; let hidechatbuttonsopen: boolean | undefined; const settings = definePluginSettings({ Color: { type: OptionType.BOOLEAN, description: "Color it red on open", // something extra default: false, }, Open: { type: OptionType.BOOLEAN, description: "opened by default", default: false, onChange: (store: { open: boolean; }) => { hidechatbuttonsopen = store.open; } }, }); function HideToggleButton(props: { open: boolean | undefined, onClick: MouseEventHandler; }) { return ( {props.open ? <> : } ); } function ButtonsInnerComponent({ buttons }: { buttons: ReactNode; }) { const buttonItems = Array.isArray(buttons) ? buttons : buttons == null ? [] : [buttons]; if (buttonItems.length === 0 || buttonItems.every(button => (button as any)?.props?.disabled === true)) return null; const [open, setOpen] = useState(hidechatbuttonsopen); useEffect(() => { hidechatbuttonsopen = open; }, [open]); return (
{open && buttons} setOpen(!open)} open={open} />
); } export default definePlugin({ name: "HideChatButtons", description: "Able to hide the chat buttons", tags: ["Chat", "Utility"], settings: settings, authors: [EquicordDevs.iamme], patches: [ { find: '"sticker")', replacement: { match: /(?<="div",\{.{0,15}children:)(.+?)\}/, replace: "$self.buttonsInner($1)}" } } ], startAt: StartAt.Init, buttonsInner(buttons: ReactNode) { return ; }, start() { hidechatbuttonsopen = settings.store.Open; }, stop() { hidechatbuttonsopen = undefined; } });