diff --git a/src/plugins/bypassDND/index.tsx b/src/plugins/bypassDND/index.tsx
index 93e7500e1..ba567b58f 100644
--- a/src/plugins/bypassDND/index.tsx
+++ b/src/plugins/bypassDND/index.tsx
@@ -1,154 +1,164 @@
-import { NavContextMenuPatchCallback, addContextMenuPatch, removeContextMenuPatch } from "@api/ContextMenu";
-import { definePluginSettings } from "@api/Settings";
-import { DataStore, Notifications } from "@api/index";
-import { Devs } from "@utils/constants";
-import definePlugin, { OptionType } from "@utils/types";
-import { ChannelStore, Menu, PresenceStore, PrivateChannelsStore, UserStore } from "@webpack/common";
-import { Channel, Guild, Message, User } from "discord-types/general";
-interface ContextProps {
- channel: Channel;
- user: User;
- guild: Guild;
-}
-
-interface IMessageCreate {
- type: "MESSAGE_CREATE";
- optimistic: boolean;
- isPushNotification: boolean;
- channelId: string;
- guildId: string;
- message: Message;
-}
-
-const GuildContext: NavContextMenuPatchCallback = (children, { guild }: ContextProps) => () => {
- if (!guild) return;
- children.splice(-1, 0, (
-
- {
- if (bypasses["guilds"].includes(guild.id)) bypasses["guilds"] = await bypasses["guilds"].filter(id => id !== guild.id);
- else bypasses["guilds"].push(guild.id);
- await DataStore.set("bypassdnd", bypasses);
- settings.store.guilds = (bypasses["guilds"].join(', '));
- }}
- />
-
- ));
-};
-
-const ChannelContext: NavContextMenuPatchCallback = (children, { channel }: ContextProps) => () => {
- if (!channel) return;
- children.splice(-1, 0, (
-
- {
- if (bypasses["channels"].includes(channel.id)) bypasses["channels"] = await bypasses["channels"].filter(id => id !== channel.id);
- else bypasses["channels"].push(channel.id);
- await DataStore.set("bypassdnd", bypasses);
- settings.store.channels = (bypasses["channels"].join(', '));
- }}
- />
-
- ));
-};
-
-const UserContext: NavContextMenuPatchCallback = (children, { user }: ContextProps) => () => {
- if (!user) return;
- children.splice(-1, 0, (
-
- {
- if (bypasses["users"].includes(user.id)) bypasses["users"] = await bypasses["users"].filter(id => id !== user.id);
- else bypasses["users"].push(user.id);
- await DataStore.set("bypassdnd", bypasses);
- settings.store.users = (bypasses["users"].join(', '));
- }}
- />
-
- ));
-};
-
-let bypasses;
-
-const settings = definePluginSettings({
- guilds: {
- type: OptionType.STRING,
- description: "Guilds to let bypass (notified when pinged anywhere in guild)",
- default: "",
- placeholder: "Separate with commas",
- onChange: async function (value) {
- bypasses["guild"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
- await DataStore.set("bypassdnd", bypasses);
- },
- },
- channels: {
- type: OptionType.STRING,
- description: "Channels to let bypass (notified when pinged in that channel)",
- default: "",
- placeholder: "Separate with commas",
- onChange: async function (value) {
- bypasses["channels"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
- await DataStore.set("bypassdnd", bypasses);
- },
- },
- users: {
- type: OptionType.STRING,
- description: "Users to let bypass (notified for all messages)",
- default: "",
- placeholder: "Separate with commas",
- onChange: async function (value) {
- bypasses["users"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
- await DataStore.set("bypassdnd", bypasses);
- },
- }
-});
-
-export default definePlugin({
- name: "BypassDND",
- description: "Still get notifications from specific sources when in do not disturb mode. Right-click on users/channels/guilds to set them to bypass do not disturb mode.",
- authors: [Devs.Inbestigator],
- flux: {
- async MESSAGE_CREATE({ optimistic, type, message, guildId, channelId }: IMessageCreate) {
- if (optimistic || type !== "MESSAGE_CREATE") return;
- if (message.state === "SENDING") return;
- if (!message.content) return;
- const currentUser = UserStore.getCurrentUser();
- if (message.author.id === currentUser.id) return;
- if (await PresenceStore.getStatus(currentUser.id) != 'dnd') return;
- if ((bypasses.guilds.includes(guildId) || bypasses.channels.includes(channelId)) && (message.content.includes(`<@${currentUser.id}>`) || message.mentions.some(mention => mention.id === currentUser.id))) {
- await Notifications.showNotification({
- title: `${message.author.globalName ?? message.author.username} sent a message in ${ChannelStore.getChannel(channelId).name}`,
- body: message.content,
- icon: UserStore.getUser(message.author.id).getAvatarURL(undefined, undefined, false),
- });
- return;
- }
- if (bypasses.users.includes(message.author.id) && channelId === await PrivateChannelsStore.getOrEnsurePrivateChannel(message.author.id)) {
- await Notifications.showNotification({
- title: `${message.author.globalName ?? message.author.username} sent a message in a DM`,
- body: message.content,
- icon: UserStore.getUser(message.author.id).getAvatarURL(undefined, undefined, false),
- });
- }
- }
- },
- settings,
- async start() {
- addContextMenuPatch("guild-context", GuildContext);
- addContextMenuPatch("channel-context", ChannelContext);
- addContextMenuPatch("user-context", UserContext);
- bypasses = await DataStore.get("bypassdnd") ?? { guilds: [], channels: [], users: [] };
- await DataStore.set("bypassdnd", bypasses);
- },
- stop() {
- removeContextMenuPatch("guild-context", GuildContext);
- removeContextMenuPatch("channel-context", ChannelContext);
- removeContextMenuPatch("user-context", UserContext);
- }
-});
+import { NavContextMenuPatchCallback, addContextMenuPatch, removeContextMenuPatch } from "@api/ContextMenu";
+import { definePluginSettings } from "@api/Settings";
+import { DataStore, Notifications } from "@api/index";
+import { Devs } from "@utils/constants";
+import definePlugin, { OptionType } from "@utils/types";
+import { ChannelStore, Menu, PresenceStore, PrivateChannelsStore, UserStore } from "@webpack/common";
+import { Channel, Guild, Message, User } from "discord-types/general";
+interface ContextProps {
+ channel: Channel;
+ user: User;
+ guild: Guild;
+}
+
+interface IMessageCreate {
+ type: "MESSAGE_CREATE";
+ optimistic: boolean;
+ isPushNotification: boolean;
+ channelId: string;
+ guildId: string;
+ message: Message;
+}
+
+const GuildContext: NavContextMenuPatchCallback = (children, { guild }: ContextProps) => () => {
+ if (!guild) return;
+ children.splice(-1, 0, (
+
+ {
+ if (bypasses["guilds"].includes(guild.id)) bypasses["guilds"] = await bypasses["guilds"].filter(id => id !== guild.id);
+ else bypasses["guilds"].push(guild.id);
+ await DataStore.set("bypassdnd", bypasses);
+ settings.store.guilds = (bypasses["guilds"].join(', '));
+ }}
+ />
+
+ ));
+};
+
+const ChannelContext: NavContextMenuPatchCallback = (children, { channel }: ContextProps) => () => {
+ if (!channel) return;
+ children.splice(-1, 0, (
+
+ {
+ if (bypasses["channels"].includes(channel.id)) bypasses["channels"] = await bypasses["channels"].filter(id => id !== channel.id);
+ else bypasses["channels"].push(channel.id);
+ await DataStore.set("bypassdnd", bypasses);
+ settings.store.channels = (bypasses["channels"].join(', '));
+ }}
+ />
+
+ ));
+};
+
+const UserContext: NavContextMenuPatchCallback = (children, { user }: ContextProps) => () => {
+ if (!user) return;
+ children.splice(-1, 0, (
+
+ {
+ if (bypasses["users"].includes(user.id)) bypasses["users"] = await bypasses["users"].filter(id => id !== user.id);
+ else bypasses["users"].push(user.id);
+ await DataStore.set("bypassdnd", bypasses);
+ settings.store.users = (bypasses["users"].join(', '));
+ }}
+ />
+
+ ));
+};
+
+type Bypasses = {
+ guilds: string[];
+ channels: string[];
+ users: string[];
+};
+
+let bypasses: Bypasses = {
+ guilds: [],
+ channels: [],
+ users: [],
+};
+
+const settings = definePluginSettings({
+ guilds: {
+ type: OptionType.STRING,
+ description: "Guilds to let bypass (notified when pinged anywhere in guild)",
+ default: "",
+ placeholder: "Separate with commas",
+ onChange: async function (value) {
+ bypasses["guilds"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
+ await DataStore.set("bypassdnd", bypasses);
+ },
+ },
+ channels: {
+ type: OptionType.STRING,
+ description: "Channels to let bypass (notified when pinged in that channel)",
+ default: "",
+ placeholder: "Separate with commas",
+ onChange: async function (value) {
+ bypasses["channels"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
+ await DataStore.set("bypassdnd", bypasses);
+ },
+ },
+ users: {
+ type: OptionType.STRING,
+ description: "Users to let bypass (notified for all messages)",
+ default: "",
+ placeholder: "Separate with commas",
+ onChange: async function (value) {
+ bypasses["users"] = value.replace(/\s/g, '').split(',').filter(id => id.trim() !== '');
+ await DataStore.set("bypassdnd", bypasses);
+ },
+ }
+});
+
+export default definePlugin({
+ name: "BypassDND",
+ description: "Still get notifications from specific sources when in do not disturb mode. Right-click on users/channels/guilds to set them to bypass do not disturb mode.",
+ authors: [Devs.Inbestigator],
+ flux: {
+ async MESSAGE_CREATE({ optimistic, type, message, guildId, channelId }: IMessageCreate) {
+ if (optimistic || type !== "MESSAGE_CREATE") return;
+ if (message.state === "SENDING") return;
+ if (!message.content) return;
+ const currentUser = UserStore.getCurrentUser();
+ if (message.author.id === currentUser.id) return;
+ if (await PresenceStore.getStatus(currentUser.id) != 'dnd') return;
+ if ((bypasses.guilds.includes(guildId) || bypasses.channels.includes(channelId)) && (message.content.includes(`<@${currentUser.id}>`) || message.mentions.some(mention => mention.id === currentUser.id))) {
+ await Notifications.showNotification({
+ title: `${message.author.globalName ?? message.author.username} sent a message in ${ChannelStore.getChannel(channelId).name}`,
+ body: message.content,
+ icon: UserStore.getUser(message.author.id).getAvatarURL(undefined, undefined, false),
+ });
+ return;
+ }
+ if (bypasses.users.includes(message.author.id) && channelId === await PrivateChannelsStore.getOrEnsurePrivateChannel(message.author.id)) {
+ await Notifications.showNotification({
+ title: `${message.author.globalName ?? message.author.username} sent a message in a DM`,
+ body: message.content,
+ icon: UserStore.getUser(message.author.id).getAvatarURL(undefined, undefined, false),
+ });
+ }
+ }
+ },
+ settings,
+ async start() {
+ addContextMenuPatch("guild-context", GuildContext);
+ addContextMenuPatch("channel-context", ChannelContext);
+ addContextMenuPatch("user-context", UserContext);
+ bypasses = await DataStore.get("bypassdnd") ?? { guilds: [], channels: [], users: [] };
+ await DataStore.set("bypassdnd", bypasses);
+ },
+ stop() {
+ removeContextMenuPatch("guild-context", GuildContext);
+ removeContextMenuPatch("channel-context", ChannelContext);
+ removeContextMenuPatch("user-context", UserContext);
+ }
+});