diff --git a/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx b/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx index b8098ae62..7e573c54d 100644 --- a/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx +++ b/src/plugins/permissionsViewer/components/RolesAndUsersPermissions.tsx @@ -26,10 +26,10 @@ import { getIntlMessage, getUniqueUsername } from "@utils/discord"; import { Guild, RenderModalProps, Role, RoleOrUserPermission, UnicodeEmoji, User } from "@vencord/discord-types"; import { PermissionOverwriteType } from "@vencord/discord-types/enums"; import { findByCodeLazy } from "@webpack"; -import { ContextMenuApi, FluxDispatcher, GuildMemberStore, GuildRoleStore, i18n, Menu, Modal,openModalLazy, PermissionsBits, ScrollerThin, Text, Tooltip, useEffect, useMemo, useRef, UserStore, useState, useStateFromStores } from "@webpack/common"; +import { ContextMenuApi, FluxDispatcher, GuildMemberStore, GuildRoleStore, i18n, Menu, Modal, openModalLazy, PermissionsBits, ScrollerThin, Text, Tooltip, useEffect, useMemo, useRef, UserStore, useState, useStateFromStores } from "@webpack/common"; import { settings } from ".."; -import { PermissionAllowedIcon, PermissionDefaultIcon, PermissionDeniedIcon } from "./icons"; +import { PermissionAllowedIcon, PermissionDeniedIcon } from "./icons"; type GetRoleIconData = (role: Role, size: number) => { customIconSrc?: string; unicodeEmoji?: UnicodeEmoji; }; const getRoleIconData: GetRoleIconData = findByCodeLazy("convertSurrogateToName", "customIconSrc", "unicodeEmoji"); @@ -160,37 +160,44 @@ function RolesAndUsersPermissionsComponent({ permissions, guild, modalProps, hea
- {Object.values(PermissionsBits).map(bit => ( -
-
- {(() => { - const { permissions, overwriteAllow, overwriteDeny } = selectedItem; + {Object.values(PermissionsBits).map(bit => { + const overrideType = (() => { + const { permissions, overwriteAllow, overwriteDeny } = selectedItem; - if (permissions) - return (permissions & bit) === bit - ? PermissionAllowedIcon() - : PermissionDeniedIcon(); + if (permissions != null) + return (permissions & bit) === bit + ? "allowed" + : "denied"; - if (overwriteAllow && (overwriteAllow & bit) === bit) - return PermissionAllowedIcon(); - if (overwriteDeny && (overwriteDeny & bit) === bit) - return PermissionDeniedIcon(); + if (overwriteAllow && (overwriteAllow & bit) === bit) + return "allowed"; + if (overwriteDeny && (overwriteDeny & bit) === bit) + return "denied"; - return PermissionDefaultIcon(); - })()} + return "default"; + })(); + + if (overrideType === "default") return null; + + return ( +
+
+ {overrideType === "allowed" && } + {overrideType === "denied" && } +
+ {guildPermissionSpecMap[String(bit)].title} + + { + const { description } = guildPermissionSpecMap[String(bit)]; + return typeof description === "function" ? i18n.intl.format(description, {}) : description; + })() + }> + {props => } +
- {guildPermissionSpecMap[String(bit)].title} - - { - const { description } = guildPermissionSpecMap[String(bit)]; - return typeof description === "function" ? i18n.intl.format(description, {}) : description; - })() - }> - {props => } - -
- ))} + ); + })}
)}