aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/permissionsViewer
diff options
context:
space:
mode:
authorV <vendicated@riseup.net>2023-05-16 00:19:20 +0200
committerGitHub <noreply@github.com>2023-05-16 00:19:20 +0200
commit263884cbd86326ed48a6b69c937ff35dec2d529b (patch)
tree525a227d17cbfa8eba30b2c3f3ac72873722fd0a /src/plugins/permissionsViewer
parentbb83c0b672abc5cb812e23d704880e1750fa61e6 (diff)
downloadVencord-263884cbd86326ed48a6b69c937ff35dec2d529b.tar.gz
Vencord-263884cbd86326ed48a6b69c937ff35dec2d529b.tar.bz2
Vencord-263884cbd86326ed48a6b69c937ff35dec2d529b.zip
PermViewer: Fix context menu for roleless users & muted channels (#1138)
Co-authored-by: V <vendicated@riseup.net> Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
Diffstat (limited to 'src/plugins/permissionsViewer')
-rw-r--r--src/plugins/permissionsViewer/index.tsx31
-rw-r--r--src/plugins/permissionsViewer/styles.css3
2 files changed, 22 insertions, 12 deletions
diff --git a/src/plugins/permissionsViewer/index.tsx b/src/plugins/permissionsViewer/index.tsx
index 793105a..208fef3 100644
--- a/src/plugins/permissionsViewer/index.tsx
+++ b/src/plugins/permissionsViewer/index.tsx
@@ -57,6 +57,8 @@ export const settings = definePluginSettings({
});
function MenuItem(guildId: string, id?: string, type?: MenuItemParentType) {
+ if (type === MenuItemParentType.User && !GuildMemberStore.isMember(guildId, id!)) return null;
+
return (
<Menu.MenuItem
id="perm-viewer-permissions"
@@ -122,25 +124,32 @@ function MenuItem(guildId: string, id?: string, type?: MenuItemParentType) {
);
}
-function makeContextMenuPatch(childId: string, type?: MenuItemParentType): NavContextMenuPatchCallback {
+function makeContextMenuPatch(childId: string | string[], type?: MenuItemParentType): NavContextMenuPatchCallback {
return (children, props) => () => {
if (!props) return children;
const group = findGroupChildrenByChildId(childId, children);
- if (group) {
+ const item = (() => {
switch (type) {
case MenuItemParentType.User:
- group.push(MenuItem(props.guildId, props.user.id, type));
- break;
+ return MenuItem(props.guildId, props.user.id, type);
case MenuItemParentType.Channel:
- group.push(MenuItem(props.guild.id, props.channel.id, type));
- break;
+ return MenuItem(props.guild.id, props.channel.id, type);
case MenuItemParentType.Guild:
- group.push(MenuItem(props.guild.id));
- break;
+ return MenuItem(props.guild.id);
+ default:
+ return null;
}
- }
+ })();
+
+ if (item == null) return;
+
+ if (group)
+ group.push(item);
+ else if (childId === "roles" && props.guildId)
+ // "roles" may not be present due to the member not having any roles. In that case, add it above "Copy ID"
+ children.splice(-1, 0, <Menu.MenuGroup>{item}</Menu.MenuGroup>);
};
}
@@ -160,10 +169,10 @@ export default definePlugin({
}
],
- UserPermissions: (guild: Guild, guildMember: GuildMember) => <UserPermissions guild={guild} guildMember={guildMember} />,
+ UserPermissions: (guild: Guild, guildMember?: GuildMember) => !!guildMember && <UserPermissions guild={guild} guildMember={guildMember} />,
userContextMenuPatch: makeContextMenuPatch("roles", MenuItemParentType.User),
- channelContextMenuPatch: makeContextMenuPatch("mute-channel", MenuItemParentType.Channel),
+ channelContextMenuPatch: makeContextMenuPatch(["mute-channel", "unmute-channel"], MenuItemParentType.Channel),
guildContextMenuPatch: makeContextMenuPatch("privacy", MenuItemParentType.Guild),
start() {
diff --git a/src/plugins/permissionsViewer/styles.css b/src/plugins/permissionsViewer/styles.css
index 6d6c137..08e5e1c 100644
--- a/src/plugins/permissionsViewer/styles.css
+++ b/src/plugins/permissionsViewer/styles.css
@@ -59,7 +59,7 @@
align-items: center;
padding: 8px 5px;
cursor: pointer;
- width: 165px;
+ width: 230px;
}
.vc-permviewer-perms-list-item > div {
@@ -121,6 +121,7 @@
position: absolute;
right: 0;
scale: 0.9;
+ transition: color ease-in 0.1s;
}
.vc-permviewer-perms-perms-item .vc-info-icon:hover {