Fix AlwaysExpandRoles, PermissionsViewer, ShowConnections (#3916)
Co-authored-by: prism <69634294+imjustprism@users.noreply.github.com>
This commit is contained in:
parent
799ecc38dd
commit
44bdb60bb6
5 changed files with 23 additions and 17 deletions
|
|
@ -27,17 +27,17 @@ export default definePlugin({
|
|||
authors: [Devs.surgedevs],
|
||||
patches: [
|
||||
{
|
||||
find: 'action:"EXPAND_ROLES"',
|
||||
find: "hasDeveloperContextMenu:",
|
||||
replacement: [
|
||||
{
|
||||
match: /(roles:\i(?=.+?(\i)\(!0\)[,;]\i\({action:"EXPAND_ROLES"}\)).+?\[\i,\2\]=\i\.useState\()!1\)/,
|
||||
replace: (_, rest, setExpandedRoles) => `${rest}!0)`
|
||||
match: /(?<=\?\i\.current\[\i\].{0,100}?)useState\(!1\)/,
|
||||
replace: "useState(!0)"
|
||||
},
|
||||
{
|
||||
// Fix not calculating non-expanded roles because the above patch makes the default "expanded",
|
||||
// which makes the collapse button never show up and calculation never occur
|
||||
match: /(?<=useLayoutEffect\(\(\)=>{if\()\i/,
|
||||
replace: isExpanded => "false"
|
||||
match: /(?<=useLayoutEffect\(\(\)=>\{if\()\i/,
|
||||
replace: "false"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,14 +37,13 @@ interface UserPermission {
|
|||
|
||||
type UserPermissions = Array<UserPermission>;
|
||||
|
||||
const { RoleRootClasses, RoleClasses, RoleBorderClasses } = proxyLazyWebpack(() => {
|
||||
const [RoleRootClasses, RoleClasses, RoleBorderClasses] = findBulk(
|
||||
filters.byProps("root", "expandButton", "collapseButton"),
|
||||
const { RoleClasses, RoleBorderClasses } = proxyLazyWebpack(() => {
|
||||
const [RoleClasses, RoleBorderClasses] = findBulk(
|
||||
filters.byProps("role", "roleCircle", "roleName"),
|
||||
filters.byProps("roleCircle", "dot", "dotBorderColor")
|
||||
) as Record<string, string>[];
|
||||
|
||||
return { RoleRootClasses, RoleClasses, RoleBorderClasses };
|
||||
return { RoleClasses, RoleBorderClasses };
|
||||
});
|
||||
|
||||
interface FakeRoleProps extends React.HTMLAttributes<HTMLDivElement> {
|
||||
|
|
@ -190,7 +189,7 @@ function UserPermissionsComponent({ guild, guildMember, closePopout }: { guild:
|
|||
</div>
|
||||
</div>
|
||||
{userPermissions.length > 0 && (
|
||||
<div className={classes(RoleRootClasses.root)}>
|
||||
<div className={classes(RoleClasses.root)}>
|
||||
{userPermissions.map(({ permission, roleColor, roleName }) => (
|
||||
<Tooltip
|
||||
key={permission}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import { TooltipContainer } from "@components/TooltipContainer";
|
|||
import { Devs } from "@utils/constants";
|
||||
import { classes } from "@utils/misc";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
import type { Guild, GuildMember } from "@vencord/discord-types";
|
||||
import type { Guild } from "@vencord/discord-types";
|
||||
import { findByPropsLazy } from "@webpack";
|
||||
import { Button, ChannelStore, Dialog, GuildMemberStore, GuildRoleStore, GuildStore, match, Menu, PermissionsBits, Popout, useRef, UserStore } from "@webpack/common";
|
||||
|
||||
|
|
@ -168,13 +168,16 @@ export default definePlugin({
|
|||
{
|
||||
find: "#{intl::COLLAPSE_ROLES}",
|
||||
replacement: {
|
||||
match: /className:(\i\.expandButton),.+?null,/,
|
||||
replace: "$&$self.ViewPermissionsButton({className:$1,props:arguments[0]}),"
|
||||
match: /(?<=\i\.id\)\),\i\(\))(?=,\i\?)/,
|
||||
replace: ",$self.ViewPermissionsButton(arguments[0])"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
ViewPermissionsButton: ErrorBoundary.wrap(({ className, props: { guild, guildMember } }: { className: string, props: { guild: Guild; guildMember: GuildMember; }; }) => {
|
||||
ViewPermissionsButton: ErrorBoundary.wrap(({ className, guild, userId }: { className: string; guild: Guild; userId: string; }) => {
|
||||
const guildMember = GuildMemberStore.getMember(guild.id, userId);
|
||||
if (!guildMember) return null;
|
||||
|
||||
const buttonRef = useRef(null);
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -160,10 +160,10 @@ export default definePlugin({
|
|||
|
||||
patches: [
|
||||
{
|
||||
find: ".hasAvatarForGuild(null==",
|
||||
find: "UserProfilePopoutBody",
|
||||
replacement: {
|
||||
match: /currentUser:\i,guild:\i[^}]*?\}\)(?=])(?<=user:(\i),bio:null==(\i)\?.+?)/,
|
||||
replace: "$&,$self.profilePopoutComponent({ user: $1, displayProfile: $2 })"
|
||||
match: /userId:\i\.id,guild:\i\}\)(?=])/,
|
||||
replace: "$&,$self.profilePopoutComponent(arguments[0])"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -625,6 +625,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
|
|||
name: "u32",
|
||||
id: 1063237286818488351n,
|
||||
},
|
||||
prism: {
|
||||
name: "prism",
|
||||
id: 390884143749136386n,
|
||||
},
|
||||
} satisfies Record<string, Dev>);
|
||||
|
||||
// iife so #__PURE__ works correctly
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue