feat(silentMessageToggle): improve the persistence switch, an option to save state between restarts (#159)
Some checks are pending
Sync to Codeberg / Sync Codeberg and Github (push) Waiting to run
Test / Test (push) Waiting to run
Release / Build Equicord (push) Waiting to run

This commit is contained in:
Z1xus 2025-02-19 01:12:24 +01:00 committed by GitHub
parent a3d326db78
commit 99af9edf13
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -19,7 +19,7 @@
import { ChatBarButton, ChatBarButtonFactory } from "@api/ChatButtons";
import { addMessagePreSendListener, MessageSendListener, removeMessagePreSendListener } from "@api/MessageEvents";
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import { Devs, EquicordDevs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types";
import { React, useEffect, useState } from "@webpack/common";
@ -29,11 +29,15 @@ export { lastState };
const settings = definePluginSettings({
persistState: {
type: OptionType.BOOLEAN,
description: "Whether to persist the state of the silent message toggle when changing channels",
default: false,
onChange(newValue: boolean) {
if (newValue === false) lastState = false;
type: OptionType.SELECT,
description: "How to persist the silent message toggle state",
options: [
{ label: "Don't persist (reset on channel change)", value: "none", default: true },
{ label: "Persist between channels", value: "channels" },
{ label: "Persist between channels and restarts", value: "restarts" }
],
onChange(newValue: string) {
lastState = newValue !== "none" && lastState;
}
},
autoDisable: {
@ -44,10 +48,10 @@ const settings = definePluginSettings({
});
const SilentMessageToggle: ChatBarButtonFactory = ({ isMainChat }) => {
const [enabled, setEnabled] = useState(lastState);
const [enabled, setEnabled] = useState(settings.store.persistState === "restarts" || lastState);
function setEnabledValue(value: boolean) {
if (settings.store.persistState) lastState = value;
if (settings.store.persistState !== "none") lastState = value;
setEnabled(value);
}
@ -91,7 +95,7 @@ const SilentMessageToggle: ChatBarButtonFactory = ({ isMainChat }) => {
export default definePlugin({
name: "SilentMessageToggle",
authors: [Devs.Nuckyz, Devs.CatNoir],
authors: [Devs.Nuckyz, Devs.CatNoir, EquicordDevs.Z1xus],
description: "Adds a button to the chat bar to toggle sending a silent message.",
settings,