diff --git a/src/plugins/newGuildSettings/index.tsx b/src/plugins/newGuildSettings/index.tsx
index 6b9dfe35..7cfb073f 100644
--- a/src/plugins/newGuildSettings/index.tsx
+++ b/src/plugins/newGuildSettings/index.tsx
@@ -16,10 +16,17 @@
* along with this program. If not, see .
*/
+import {
+ findGroupChildrenByChildId,
+ NavContextMenuPatchCallback
+} from "@api/ContextMenu";
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
+import { CogWheel } from "@components/Icons";
import { Devs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types";
import { findByCodeLazy, findByPropsLazy, mapMangledModuleLazy } from "@webpack";
+import { Menu } from "@webpack/common";
+import { Guild } from "discord-types/general";
const { updateGuildNotificationSettings } = findByPropsLazy("updateGuildNotificationSettings");
const { toggleShowAllChannels } = mapMangledModuleLazy(".onboardExistingMember(", {
@@ -73,48 +80,68 @@ const settings = definePluginSettings({
}
});
+const makeContextMenuPatch: (shouldAddIcon: boolean) => NavContextMenuPatchCallback = (shouldAddIcon: boolean) => (children, { guild }: { guild: Guild, onClose(): void; }) => {
+ if (!guild) return;
+
+ const group = findGroupChildrenByChildId("privacy", children);
+ group?.push(
+
applyDefaultSettings(guild.id)}
+ />
+ );
+};
+
+function applyDefaultSettings(guildId: string | null) {
+ if (guildId === "@me" || guildId === "null" || guildId == null) return;
+ updateGuildNotificationSettings(guildId,
+ {
+ muted: settings.store.guild,
+ suppress_everyone: settings.store.everyone,
+ suppress_roles: settings.store.role,
+ mute_scheduled_events: settings.store.events,
+ notify_highlights: settings.store.highlights ? 1 : 0
+ });
+ if (settings.store.messages !== 3) {
+ updateGuildNotificationSettings(guildId,
+ {
+ message_notifications: settings.store.messages,
+ });
+ }
+ if (settings.store.showAllChannels && isOptInEnabledForGuild(guildId)) {
+ toggleShowAllChannels(guildId);
+ }
+}
+
+
migratePluginSettings("NewGuildSettings", "MuteNewGuild");
export default definePlugin({
name: "NewGuildSettings",
description: "Automatically mute new servers and change various other settings upon joining",
tags: ["MuteNewGuild", "mute", "server"],
authors: [Devs.Glitch, Devs.Nuckyz, Devs.carince, Devs.Mopi, Devs.GabiRP],
+ contextMenus: {
+ "guild-context": makeContextMenuPatch(false),
+ "guild-header-popout": makeContextMenuPatch(true)
+ },
patches: [
{
find: ",acceptInvite(",
replacement: {
match: /INVITE_ACCEPT_SUCCESS.+?,(\i)=null!==.+?;/,
- replace: (m, guildId) => `${m}$self.handleMute(${guildId});`
+ replace: (m, guildId) => `${m}$self.applyDefaultSettings(${guildId});`
}
},
{
find: "{joinGuild:",
replacement: {
match: /guildId:(\i),lurker:(\i).{0,20}}\)\);/,
- replace: (m, guildId, lurker) => `${m}if(!${lurker})$self.handleMute(${guildId});`
+ replace: (m, guildId, lurker) => `${m}if(!${lurker})$self.applyDefaultSettings(${guildId});`
}
}
],
settings,
-
- handleMute(guildId: string | null) {
- if (guildId === "@me" || guildId === "null" || guildId == null) return;
- updateGuildNotificationSettings(guildId,
- {
- muted: settings.store.guild,
- suppress_everyone: settings.store.everyone,
- suppress_roles: settings.store.role,
- mute_scheduled_events: settings.store.events,
- notify_highlights: settings.store.highlights ? 1 : 0
- });
- if (settings.store.messages !== 3) {
- updateGuildNotificationSettings(guildId,
- {
- message_notifications: settings.store.messages,
- });
- }
- if (settings.store.showAllChannels && isOptInEnabledForGuild(guildId)) {
- toggleShowAllChannels(guildId);
- }
- }
+ applyDefaultSettings
});