Files
NitroSniper/settings.tsx

62 lines
1.9 KiB
TypeScript
Raw Permalink Normal View History

2026-05-01 10:25:52 -04:00
/*
Made with by neoarz
I am not responsible for any damage caused by this plugin; use at your own risk
Vencord does not endorse/support this plugin (Works with Equicord as well)
dm @neoarz if u need help or have any questions
https://github.com/neoarz/NitroSniper
*/
2026-04-22 22:02:36 -04:00
import { definePluginSettings } from "@api/Settings";
import { OptionType } from "@utils/types";
import { Button, showToast, Toasts } from "@webpack/common";
import { sendTestWebhook } from "./webhook";
function getToastErrorMessage(error: unknown) {
return error instanceof Error
? error.message
: "Failed to send test webhook.";
}
2026-04-22 22:02:36 -04:00
function TestWebhookButton() {
const { webhookUrl } = settings.use(["webhookUrl"]);
const disabled = webhookUrl.trim().length === 0;
return (
<Button
disabled={disabled}
onClick={() => {
void sendTestWebhook(webhookUrl)
.then(() => {
showToast("Test webhook sent successfully.", Toasts.Type.SUCCESS);
})
.catch((error: unknown) => {
showToast(getToastErrorMessage(error), Toasts.Type.FAILURE);
2026-04-22 22:02:36 -04:00
});
}}
>
Send Test Webhook
</Button>
);
}
export const settings = definePluginSettings({
ignoreOwnGiftLinks: {
type: OptionType.BOOLEAN,
description: "Do not redeem Nitro gift links from messages sent by you.",
default: false,
restartNeeded: false
},
webhookUrl: {
type: OptionType.STRING,
description: "Discord webhook URL to notify after each redeem attempt. Leave empty to disable.",
default: "",
restartNeeded: false
},
testWebhook: {
type: OptionType.COMPONENT,
description: "Send a test message to the configured webhook.",
component: TestWebhookButton
}
});