From e50d8c44bd1806046a53a1956f454090f2532099 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Mon, 4 May 2026 12:12:30 +0200 Subject: [PATCH] Fix PermissionsViewer & NoMosaic --- src/plugins/decor/index.tsx | 4 ---- src/plugins/noMosaic/index.ts | 7 ++++++ .../components/RolesAndUsersPermissions.tsx | 24 +++++++++++-------- src/plugins/permissionsViewer/index.tsx | 9 +++---- src/plugins/permissionsViewer/utils.ts | 4 +++- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/plugins/decor/index.tsx b/src/plugins/decor/index.tsx index 280b70beb..927d0f3e6 100644 --- a/src/plugins/decor/index.tsx +++ b/src/plugins/decor/index.tsx @@ -112,10 +112,6 @@ export default definePlugin({ { find: "#{intl::PREMIUM_UPSELL_PROFILE_AVATAR_DECO_INLINE_UPSELL_DESCRIPTION}", replacement: [ - { - match: /(#{intl::PREMIUM_UPSELL_PROFILE_AVATAR_DECO_INLINE_UPSELL_DESCRIPTION}.+?return null!=(\i)&&\()(null==\i)/, - replace: (_, rest, avatarDecoration, hasPurchase) => `${rest}(${avatarDecoration}.skuId!==$self.SKU_ID&&${avatarDecoration}.skuId!==$self.RAW_SKU_ID&&${hasPurchase})` - }, { match: /(?<==)\i=>{let{user:\i,guildId:\i,avatarDecoration:/, replace: "$self.AvatarDecorationModalPreview=$&" diff --git a/src/plugins/noMosaic/index.ts b/src/plugins/noMosaic/index.ts index 90b74b927..6705160f3 100644 --- a/src/plugins/noMosaic/index.ts +++ b/src/plugins/noMosaic/index.ts @@ -27,6 +27,13 @@ export default definePlugin({ settings, patches: [ + { + find: '"PLAINTEXT_PREVIEW":"OTHER"', + replacement: { + match: /"IMAGE"===\i\|\|"VIDEO"===\i\|\|"CLIP"===\i/, + replace: "false" + } + }, { find: "renderAttachments(", predicate: () => settings.store.inlineVideo, diff --git a/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx b/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx index c77c7c706..031b925d4 100644 --- a/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx +++ b/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx @@ -19,10 +19,10 @@ import ErrorBoundary from "@components/ErrorBoundary"; import { Flex } from "@components/Flex"; import { InfoIcon, OwnerCrownIcon } from "@components/Icons"; -import { cl, getGuildPermissionSpecMap } from "@plugins/permissionsViewer/utils"; +import { cl, getGuildPermissionSpecMap, loadGetGuildPermissionSpecMap } from "@plugins/permissionsViewer/utils"; import { copyToClipboard } from "@utils/clipboard"; import { getIntlMessage, getUniqueUsername } from "@utils/discord"; -import { ModalCloseButton, ModalContent, ModalHeader, ModalProps, ModalRoot, ModalSize, openModal } from "@utils/modal"; +import { ModalCloseButton, ModalContent, ModalHeader, ModalProps, ModalRoot, ModalSize, openModalLazy } from "@utils/modal"; import { Guild, Role, RoleOrUserPermission, UnicodeEmoji, User } from "@vencord/discord-types"; import { PermissionOverwriteType } from "@vencord/discord-types/enums"; import { findByCodeLazy } from "@webpack"; @@ -266,12 +266,16 @@ function UserContextMenu({ userId }: { userId: string; }) { const RolesAndUsersPermissions = ErrorBoundary.wrap(RolesAndUsersPermissionsComponent); export default function openRolesAndUsersPermissionsModal(permissions: Array, guild: Guild, header: string) { - return openModal(modalProps => ( - - )); + return openModalLazy(async () => { + await loadGetGuildPermissionSpecMap(); + + return modalProps => ( + + ); + }); } diff --git a/src/plugins/permissionsViewer/index.tsx b/src/plugins/permissionsViewer/index.tsx index bf89bee3a..b8b011b73 100644 --- a/src/plugins/permissionsViewer/index.tsx +++ b/src/plugins/permissionsViewer/index.tsx @@ -29,11 +29,11 @@ import definePlugin, { OptionType } from "@utils/types"; import type { Guild, RoleOrUserPermission } from "@vencord/discord-types"; import { PermissionOverwriteType } from "@vencord/discord-types/enums"; import { findCssClassesLazy } from "@webpack"; -import { Button, ChannelStore, Dialog, GuildMemberStore, GuildRoleStore, GuildStore, match, Menu, PermissionsBits, Popout, useRef, UserStore } from "@webpack/common"; +import { Button, ChannelStore, Dialog, GuildMemberStore, GuildRoleStore, GuildStore, match, Menu, PermissionsBits, Popout, useEffect, useRef, UserStore } from "@webpack/common"; import openRolesAndUsersPermissionsModal from "./components/RolesAndUsersPermissions"; import UserPermissions from "./components/UserPermissions"; -import { getSortedRolesForMember, sortPermissionOverwrites } from "./utils"; +import { getSortedRolesForMember, loadGetGuildPermissionSpecMap, sortPermissionOverwrites } from "./utils"; const PopoutClasses = findCssClassesLazy("container", "popoutRoleDot"); @@ -175,11 +175,12 @@ export default definePlugin({ ], ViewPermissionsButton: ErrorBoundary.wrap(({ className, guild, userId }: { className: string; guild: Guild; userId: string; }) => { + const buttonRef = useRef(null); + useEffect(() => void loadGetGuildPermissionSpecMap(), []); + const guildMember = GuildMemberStore.getMember(guild.id, userId); if (!guildMember) return null; - const buttonRef = useRef(null); - return (