From 5eb9dd04dff212686e3395752877ddf62c1f78e2 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Fri, 6 Oct 2023 04:00:09 +0200 Subject: [PATCH] Fix member list decorations api --- src/api/MemberListDecorators.ts | 5 ++--- src/plugins/_api/memberListDecorators.ts | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/api/MemberListDecorators.ts b/src/api/MemberListDecorators.ts index fade2a7c..e148bb0a 100644 --- a/src/api/MemberListDecorators.ts +++ b/src/api/MemberListDecorators.ts @@ -20,7 +20,6 @@ import { Channel, User } from "discord-types/general/index.js"; interface DecoratorProps { activities: any[]; - canUseAvatarDecorations: boolean; channel: Channel; /** * Only for DM members @@ -52,9 +51,9 @@ export function removeDecorator(identifier: string) { decorators.delete(identifier); } -export function __addDecoratorsToList(props: DecoratorProps): (JSX.Element | null)[] { +export function __getDecorators(props: DecoratorProps): (JSX.Element | null)[] { const isInGuild = !!(props.guildId); - return [...decorators.values()].map(decoratorObj => { + return Array.from(decorators.values(), decoratorObj => { const { decorator, onlyIn } = decoratorObj; // this can most likely be done cleaner if (!onlyIn || (onlyIn === "guilds" && isInGuild) || (onlyIn === "dms" && !isInGuild)) { diff --git a/src/plugins/_api/memberListDecorators.ts b/src/plugins/_api/memberListDecorators.ts index 6b8cffab..a6d4125d 100644 --- a/src/plugins/_api/memberListDecorators.ts +++ b/src/plugins/_api/memberListDecorators.ts @@ -22,21 +22,28 @@ import definePlugin from "@utils/types"; export default definePlugin({ name: "MemberListDecoratorsAPI", description: "API to add decorators to member list (both in servers and DMs)", - authors: [Devs.TheSun], + authors: [Devs.TheSun, Devs.Ven], patches: [ { find: "lostPermissionTooltipText,", replacement: { - match: /Fragment,{children:\[(.{30,80})\]/, - replace: "Fragment,{children:Vencord.Api.MemberListDecorators.__addDecoratorsToList(this.props).concat($1)" + match: /decorators:.{0,100}?children:\[(?<=(\i)\.lostPermissionTooltipText.+?)/, + replace: "$&...Vencord.Api.MemberListDecorators.__getDecorators($1)," } }, { find: "PrivateChannel.renderAvatar", - replacement: { - match: /(subText:(.{1,2})\.renderSubtitle\(\).{1,50}decorators):(.{30,100}:null)/, - replace: "$1:Vencord.Api.MemberListDecorators.__addDecoratorsToList($2.props).concat($3)" - } + replacement: [ + // props are shadowed by nested props so we have to do this + { + match: /\i=(\i)\.applicationStream,/, + replace: "$&vencordProps=$1," + }, + { + match: /decorators:(\i\.isSystemDM\(\))\?(.+?):null/, + replace: "decorators:[...(typeof vencordProps=='undefined'?[]:Vencord.Api.MemberListDecorators.__getDecorators(vencordProps)), $1?$2:null]" + } + ] } ], });