aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/permissionsViewer/index.tsx6
-rw-r--r--src/plugins/permissionsViewer/utils.ts16
-rw-r--r--src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx5
-rw-r--r--src/plugins/showHiddenChannels/index.tsx10
4 files changed, 26 insertions, 11 deletions
diff --git a/src/plugins/permissionsViewer/index.tsx b/src/plugins/permissionsViewer/index.tsx
index 208fef3..480efc1 100644
--- a/src/plugins/permissionsViewer/index.tsx
+++ b/src/plugins/permissionsViewer/index.tsx
@@ -27,7 +27,7 @@ import type { Guild, GuildMember } from "discord-types/general";
import openRolesAndUsersPermissionsModal, { PermissionType, RoleOrUserPermission } from "./components/RolesAndUsersPermissions";
import UserPermissions from "./components/UserPermissions";
-import { getSortedRoles } from "./utils";
+import { getSortedRoles, sortPermissionOverwrites } from "./utils";
export const enum PermissionsSortOrder {
HighestRole,
@@ -94,12 +94,12 @@ function MenuItem(guildId: string, id?: string, type?: MenuItemParentType) {
case MenuItemParentType.Channel: {
const channel = ChannelStore.getChannel(id!);
- permissions = Object.values(channel.permissionOverwrites).map(({ id, allow, deny, type }) => ({
+ permissions = sortPermissionOverwrites(Object.values(channel.permissionOverwrites).map(({ id, allow, deny, type }) => ({
type: type as PermissionType,
id,
overwriteAllow: allow,
overwriteDeny: deny
- }));
+ })), guildId);
header = channel.name;
diff --git a/src/plugins/permissionsViewer/utils.ts b/src/plugins/permissionsViewer/utils.ts
index b747147..06f293b 100644
--- a/src/plugins/permissionsViewer/utils.ts
+++ b/src/plugins/permissionsViewer/utils.ts
@@ -18,11 +18,12 @@
import { classNameFactory } from "@api/Styles";
import { wordsToTitle } from "@utils/text";
-import { i18n, Parser } from "@webpack/common";
+import { GuildStore, i18n, Parser } from "@webpack/common";
import { Guild, GuildMember, Role } from "discord-types/general";
import type { ReactNode } from "react";
import { PermissionsSortOrder, settings } from ".";
+import { PermissionType } from "./components/RolesAndUsersPermissions";
export const cl = classNameFactory("vc-permviewer-");
@@ -82,3 +83,16 @@ export function sortUserRoles(roles: Role[]) {
return roles;
}
}
+
+export function sortPermissionOverwrites<T extends { id: string; type: number; }>(overwrites: T[], guildId: string) {
+ const guild = GuildStore.getGuild(guildId);
+
+ return overwrites.sort((a, b) => {
+ if (a.type !== PermissionType.Role || b.type !== PermissionType.Role) return 0;
+
+ const roleA = guild.roles[a.id];
+ const roleB = guild.roles[b.id];
+
+ return roleB.position - roleA.position;
+ });
+}
diff --git a/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx b/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx
index 506fbe7..d01efec 100644
--- a/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx
+++ b/src/plugins/showHiddenChannels/components/HiddenChannelLockScreen.tsx
@@ -26,6 +26,7 @@ import type { Channel } from "discord-types/general";
import type { ComponentType } from "react";
import openRolesAndUsersPermissionsModal, { PermissionType, RoleOrUserPermission } from "../../permissionsViewer/components/RolesAndUsersPermissions";
+import { sortPermissionOverwrites } from "../../permissionsViewer/utils";
import { settings, VIEW_CHANNEL } from "..";
enum SortOrderTypes {
@@ -169,12 +170,12 @@ function HiddenChannelLockScreen({ channel }: { channel: ExtendedChannel; }) {
}
if (Settings.plugins.PermissionsViewer.enabled) {
- setPermissions(Object.values(permissionOverwrites).map(overwrite => ({
+ setPermissions(sortPermissionOverwrites(Object.values(permissionOverwrites).map(overwrite => ({
type: overwrite.type as PermissionType,
id: overwrite.id,
overwriteAllow: overwrite.allow,
overwriteDeny: overwrite.deny
- })));
+ })), guild_id));
}
}, [channelId]);
diff --git a/src/plugins/showHiddenChannels/index.tsx b/src/plugins/showHiddenChannels/index.tsx
index 667f710..634b5cd 100644
--- a/src/plugins/showHiddenChannels/index.tsx
+++ b/src/plugins/showHiddenChannels/index.tsx
@@ -107,13 +107,13 @@ export default definePlugin({
},
{
// Prevent Discord from trying to connect to hidden channels
- match: /(?=\|\|\i\.default\.selectVoiceChannel\((\i)\.id\))/,
- replace: (_, channel) => `||$self.isHiddenChannel(${channel})`
+ match: /if\(!\i&&!\i(?=.{0,50}?selectVoiceChannel\((\i)\.id\))/,
+ replace: (m, channel) => `${m}&&!$self.isHiddenChannel(${channel})`
},
{
// Make Discord show inside the channel if clicking on a hidden or locked channel
- match: /(?<=\|\|\i\.default\.selectVoiceChannel\((\i)\.id\);!__OVERLAY__&&\()/,
- replace: (_, channel) => `$self.isHiddenChannel(${channel},true)||`
+ match: /!__OVERLAY__&&\((?<=selectVoiceChannel\((\i)\.id\).+?)/,
+ replace: (m, channel) => `${m}$self.isHiddenChannel(${channel},true)||`
}
]
},
@@ -195,7 +195,7 @@ export default definePlugin({
replace: (_, pushNotificationButtonExpression, channel) => `if($self.isHiddenChannel(${channel})){${pushNotificationButtonExpression}break;}`
},
{
- match: /(?<=renderHeaderToolbar=function.+?case \i\.\i\.GUILD_FORUM:if\(!\i\){)(?=.+?;(.+?{channel:(\i)},"notifications"\)\)))/,
+ match: /(?<=renderHeaderToolbar=function.+?case \i\.\i\.GUILD_FORUM:.+?if\(!\i\){)(?=.+?;(.+?{channel:(\i)},"notifications"\)\)))/,
replace: (_, pushNotificationButtonExpression, channel) => `if($self.isHiddenChannel(${channel})){${pushNotificationButtonExpression};break;}`
},
{