/* * Vencord, a Discord client mod * Copyright (c) 2023 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import { definePluginSettings } from "@api/Settings"; import { OptionType } from "@utils/types"; import { Button, Forms, TextInput, useState } from "@webpack/common"; import { openSoundBoardLog } from "./components/SoundBoardLog"; const settings = definePluginSettings({ SavedIds: { description: "The amount of soundboard ids you want to save at a time (0 lets you save infinite)", type: OptionType.COMPONENT, component: ({ setValue, setError }) => { const value = settings.store.SavedIds ?? 50; const [state, setState] = useState(`${value}`); const [shouldShowWarning, setShouldShowWarning] = useState(false); const [errorMessage, setErrorMessage] = useState(null); function handleChange(newValue) { const changed = Number(newValue); if (Number.isNaN(changed) || changed % 1 !== 0 || changed < 0) { setError(true); let errorMsg = ""; errorMsg += Number.isNaN(changed) ? "The value is not a number.\n" : ""; errorMsg += (changed % 1 !== 0) ? "The value can't be a decimal number.\n" : ""; errorMsg += (changed < 0) ? "The value can't be a negative number.\n" : ""; setErrorMessage(errorMsg); return; } else { setError(false); setErrorMessage(null); } if (changed < value) { setShouldShowWarning(true); } else { setShouldShowWarning(false); } setState(newValue); setValue(changed); } return ( The amount of soundboard ids you want to save at a time (0 lets you save infinite) {shouldShowWarning && Warning! Setting the number to a lower value will reset the log!} {errorMessage && {errorMessage}} ); } }, FileType: { description: "the format that you want to save your file", type: OptionType.SELECT, options: [ { label: ".ogg", value: ".ogg", default: true }, { label: ".mp3", value: ".mp3" }, { label: ".wav", value: ".wav" }, ], }, OpenLogs: { type: OptionType.COMPONENT, description: "show the logs", component: () => }, soundVolume: { description: "How loud the toggle sound is (0 to disable)", type: OptionType.SLIDER, default: 0.5, markers: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] }, IconLocation: { description: "choose where to show the SoundBoard Log icon (requires restart)", type: OptionType.SELECT, options: [ { label: "Toolbar", value: "toolbar", default: true }, { label: "Chat input", value: "chat" } ], restartNeeded: true }, }); export default settings;