Skip to content

Commit 6559aa0

Browse files
chore: change permissions representation from by state to by perm
1 parent e01b1a6 commit 6559aa0

File tree

1 file changed

+24
-37
lines changed

1 file changed

+24
-37
lines changed

src/interactions/shared/permissions-config.ts

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -61,25 +61,22 @@ const createPermissionsEmbed = async ({
6161
});
6262
}
6363
const title = "Managing permissions";
64-
const allowedPermissions = options
65-
.filter((option) => option.default)
66-
.map((option) => option.label);
67-
const deniedPermissions = options
68-
.filter((option) => !(option.default ?? false))
69-
.map((option) => option.label);
64+
// Make a map of permission names to the state ("allow", "deny")
65+
const permissionMap: { [key: string]: string } = {};
66+
for (const option of options) {
67+
permissionMap[option.label] = option.default ?? false ? "allow" : "deny";
68+
}
69+
7070
const description =
71-
`
72-
Current permissions for role <@&${targetId}>\n` +
71+
`Current permissions for role <@&${targetId}>\n` +
7372
(first
7473
? ""
7574
: "Permissions have been updated - but you can keep managing them\n\n") +
76-
`**✅ Allowed:** ${
77-
allowedPermissions.length > 0 ? allowedPermissions.join(", ") : "None"
78-
}\n` +
79-
`**❌ Denied:** ${
80-
deniedPermissions.length > 0 ? deniedPermissions.join(", ") : "None"
81-
}
82-
`;
75+
Object.entries(permissionMap)
76+
.map(([permission, state]): string => {
77+
return `${state === "allow" ? "✅" : "❌"} ${permission}`;
78+
})
79+
.join("\n");
8380
return {
8481
embed: addTipToEmbed({ title, description, color: embedPink }),
8582
components: [
@@ -126,11 +123,10 @@ const createPermissionsEmbed = async ({
126123
description +=
127124
"\nPermissions have been updated - but you can keep managing them";
128125
}
126+
const permissionMap: { [key: string]: "allow" | "inherit" | "deny" } = {};
129127
const allowOptions: APISelectMenuOption[] = [];
130128
const denyOptions: APISelectMenuOption[] = [];
131-
const inheritedPermissions: string[] = [];
132-
const allowedPermissions: string[] = [];
133-
const deniedPermissions: string[] = [];
129+
134130
// If the permission is present in deny permissions it will be default in deny options
135131
// and vice versa
136132
// All permissions will be in both options
@@ -159,28 +155,19 @@ const createPermissionsEmbed = async ({
159155
description: internalPermission.description,
160156
default: denied,
161157
});
162-
if (allowed) {
163-
allowedPermissions.push(internalPermission.readableName);
164-
} else if (denied) {
165-
deniedPermissions.push(internalPermission.readableName);
166-
} else {
167-
// As it will be hard to filter out inherited permissions from options
168-
inheritedPermissions.push(internalPermission.readableName);
169-
}
158+
permissionMap[internalPermission.readableName] =
159+
allowed && !denied ? "allow" : denied && !allowed ? "deny" : "inherit";
170160
}
171161

172162
description +=
173-
`\n\n**✅ Allowed:** ${
174-
allowedPermissions.length > 0 ? allowedPermissions.join(", ") : "None"
175-
}\n` +
176-
`**➡️ Inherited:** ${
177-
inheritedPermissions.length > 0
178-
? inheritedPermissions.join(", ")
179-
: "None"
180-
}\n` +
181-
`**❌ Denied:** ${
182-
deniedPermissions.length > 0 ? deniedPermissions.join(", ") : "None"
183-
}`;
163+
"\n\n" +
164+
Object.entries(permissionMap)
165+
.map(([permission, state]): string => {
166+
return `${
167+
state === "allow" ? "✅" : state === "deny" ? "❌" : "➡️"
168+
} ${permission}`;
169+
})
170+
.join("\n");
184171

185172
return {
186173
embed: addTipToEmbed({

0 commit comments

Comments
 (0)