From 6d00d6826b1a45996ca36a01080b663d609d9c26 Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Thu, 22 Aug 2024 11:43:44 -0400 Subject: [PATCH] Reverts --- src/plugins/_api/badges/index.tsx | 27 ++++++++++ src/plugins/betterNotes/index.tsx | 18 +++++++ src/plugins/friendsSince/index.tsx | 65 +++++++++++++++++++++++-- src/plugins/mutualGroupDMs/index.tsx | 14 ++++++ src/plugins/permissionsViewer/index.tsx | 7 +++ src/plugins/pronoundb/index.ts | 22 +++++++++ src/plugins/reviewDB/index.tsx | 7 +++ src/plugins/reviewDB/style.css | 6 ++- src/plugins/showConnections/index.tsx | 28 ++++++++--- src/plugins/viewIcons/index.tsx | 8 +++ 10 files changed, 192 insertions(+), 10 deletions(-) diff --git a/src/plugins/_api/badges/index.tsx b/src/plugins/_api/badges/index.tsx index f86d1af0..0dc09370 100644 --- a/src/plugins/_api/badges/index.tsx +++ b/src/plugins/_api/badges/index.tsx @@ -77,6 +77,33 @@ export default definePlugin({ authors: [Devs.Megu, Devs.Ven, Devs.TheSun], required: true, patches: [ + /* Patch the badge list component on user profiles */ + { + find: 'id:"premium",', + replacement: [ + { + match: /&&(\i)\.push\(\{id:"premium".+?\}\);/, + replace: "$&$1.unshift(...$self.getBadges(arguments[0]));", + }, + { + // alt: "", aria-hidden: false, src: originalSrc + match: /alt:" ","aria-hidden":!0,src:(?=(\i)\.src)/, + // ...badge.props, ..., src: badge.image ?? ... + replace: "...$1.props,$& $1.image??" + }, + // replace their component with ours if applicable + { + match: /(?<=text:(\i)\.description,spacing:12,.{0,50})children:/, + replace: "children:$1.component ? () => $self.renderBadgeComponent($1) :" + }, + // conditionally override their onClick with badge.onClick if it exists + { + match: /href:(\i)\.link/, + replace: "...($1.onClick && { onClick: vcE => $1.onClick(vcE, $1) }),$&" + } + ] + }, + /* new profiles */ { find: ".FULL_SIZE]:26", diff --git a/src/plugins/betterNotes/index.tsx b/src/plugins/betterNotes/index.tsx index 63fcf647..b97076bf 100644 --- a/src/plugins/betterNotes/index.tsx +++ b/src/plugins/betterNotes/index.tsx @@ -17,9 +17,13 @@ */ import { definePluginSettings, Settings } from "@api/Settings"; +import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; import { canonicalizeMatch } from "@utils/patches"; import definePlugin, { OptionType } from "@utils/types"; +import { findByPropsLazy } from "@webpack"; + +const UserPopoutSectionCssClasses = findByPropsLazy("section", "lastSection"); const settings = definePluginSettings({ hide: { @@ -68,9 +72,23 @@ export default definePlugin({ match: /\.NOTE_PLACEHOLDER,/, replace: "$&spellCheck:!$self.noSpellCheck," } + }, + { + find: ".popularApplicationCommandIds,", + replacement: { + match: /lastSection:(!?\i)}\),/, + replace: "$&$self.patchPadding({lastSection:$1})," + } } ], + patchPadding: ErrorBoundary.wrap(({ lastSection }) => { + if (!lastSection) return null; + return ( +
+ ); + }), + get noSpellCheck() { return settings.store.noSpellCheck; } diff --git a/src/plugins/friendsSince/index.tsx b/src/plugins/friendsSince/index.tsx index 13237504..b0aed7a3 100644 --- a/src/plugins/friendsSince/index.tsx +++ b/src/plugins/friendsSince/index.tsx @@ -16,6 +16,8 @@ const containerWrapper = findByPropsLazy("memberSinceWrapper"); const container = findByPropsLazy("memberSince"); const getCreatedAtDate = findByCodeLazy('month:"short",day:"numeric"'); const locale = findByPropsLazy("getLocale"); +const lastSection = findByPropsLazy("lastSection"); + const section = findLazy((m: any) => m.section !== void 0 && m.heading !== void 0 && Object.values(m).length === 2); export default definePlugin({ @@ -23,12 +25,36 @@ export default definePlugin({ description: "Shows when you became friends with someone in the user popout", authors: [Devs.Elvyra, Devs.Antti], patches: [ + // User popup - old layout + { + find: ".USER_PROFILE}};return", + replacement: { + match: /,{userId:(\i.id).{0,30}}\)/, + replace: "$&,$self.friendsSinceOld({ userId: $1 })" + } + }, + // DM User Sidebar - old layout + { + find: ".PROFILE_PANEL,", + replacement: { + match: /,{userId:([^,]+?)}\)/, + replace: "$&,$self.friendsSinceOld({ userId: $1 })" + } + }, + // User Profile Modal - old layout + { + find: ".userInfoSectionHeader,", + replacement: { + match: /(\.Messages\.USER_PROFILE_MEMBER_SINCE.+?userId:(.+?),textClassName:)(\i\.userInfoText)}\)/, + replace: (_, rest, userId, textClassName) => `${rest}!$self.getFriendSince(${userId}) ? ${textClassName} : void 0 }), $self.friendsSinceOld({ userId: ${userId}, textClassName: ${textClassName} })` + } + }, // DM User Sidebar - new layout { find: ".PANEL}),nicknameIcons", replacement: { match: /USER_PROFILE_MEMBER_SINCE,.{0,100}userId:(\i\.id)}\)}\)/, - replace: "$&,$self.friendsSince({userId:$1,isSidebar:true})" + replace: "$&,$self.friendsSinceNew({userId:$1,isSidebar:true})" } }, // User Profile Modal - new layout @@ -36,7 +62,7 @@ export default definePlugin({ find: "action:\"PRESS_APP_CONNECTION\"", replacement: { match: /USER_PROFILE_MEMBER_SINCE,.{0,100}userId:(\i\.id),.{0,100}}\)}\),/, - replace: "$&,$self.friendsSince({userId:$1,isSidebar:false})," + replace: "$&,$self.friendsSinceNew({userId:$1,isSidebar:false})," } } ], @@ -52,7 +78,40 @@ export default definePlugin({ } }, - friendsSince: ErrorBoundary.wrap(({ userId, isSidebar }: { userId: string; isSidebar: boolean; }) => { + friendsSinceOld: ErrorBoundary.wrap(({ userId, textClassName }: { userId: string; textClassName?: string; }) => { + if (!RelationshipStore.isFriend(userId)) return null; + + const friendsSince = RelationshipStore.getSince(userId); + if (!friendsSince) return null; + + return ( +
+ + Friends Since + + +
+ {!!getCurrentChannel()?.guild_id && ( + + )} + + {getCreatedAtDate(friendsSince, locale.getLocale())} + +
+
+ ); + }, { noop: true }), + + friendsSinceNew: ErrorBoundary.wrap(({ userId, isSidebar }: { userId: string; isSidebar: boolean; }) => { if (!RelationshipStore.isFriend(userId)) return null; const friendsSince = RelationshipStore.getSince(userId); diff --git a/src/plugins/mutualGroupDMs/index.tsx b/src/plugins/mutualGroupDMs/index.tsx index 755aaeff..7c71e1ed 100644 --- a/src/plugins/mutualGroupDMs/index.tsx +++ b/src/plugins/mutualGroupDMs/index.tsx @@ -58,6 +58,20 @@ export default definePlugin({ authors: [Devs.amia], patches: [ + { + find: ".Messages.MUTUAL_GUILDS_WITH_END_COUNT", // Note: the module is lazy-loaded + replacement: { + match: /(?<=\.tabBarItem.{0,50}MUTUAL_GUILDS.+?}\),)(?=.+?(\(0,\i\.jsxs?\)\(.{0,100}id:))/, + replace: '$self.isBotOrSelf(arguments[0].user)?null:$1"MUTUAL_GDMS",children:$self.getMutualGDMCountText(arguments[0].user)}),' + } + }, + { + find: ".USER_INFO_CONNECTIONS:case", + replacement: { + match: /(?<={user:(\i),onClose:(\i)}\);)(?=case \i\.\i\.MUTUAL_FRIENDS)/, + replace: "case \"MUTUAL_GDMS\":return $self.renderMutualGDMs({user: $1, onClose: $2});" + } + }, { find: ".MUTUAL_FRIENDS?(", replacement: [ diff --git a/src/plugins/permissionsViewer/index.tsx b/src/plugins/permissionsViewer/index.tsx index afd0df29..eaf90439 100644 --- a/src/plugins/permissionsViewer/index.tsx +++ b/src/plugins/permissionsViewer/index.tsx @@ -175,6 +175,13 @@ export default definePlugin({ settings, patches: [ + { + find: ".popularApplicationCommandIds,", + replacement: { + match: /showBorder:(.{0,60})}\),(?<=guild:(\i),guildMember:(\i),.+?)/, + replace: (m, showBoder, guild, guildMember) => `${m}$self.UserPermissions(${guild},${guildMember},${showBoder}),` + } + }, { find: ".VIEW_ALL_ROLES,", replacement: [ diff --git a/src/plugins/pronoundb/index.ts b/src/plugins/pronoundb/index.ts index 4f0fb8f3..690c5ef5 100644 --- a/src/plugins/pronoundb/index.ts +++ b/src/plugins/pronoundb/index.ts @@ -51,6 +51,28 @@ export default definePlugin({ replace: "[$1, $self.PronounsChatComponentWrapper(arguments[0])]" } ] + }, + // Patch the profile popout username header to use our pronoun hook instead of Discord's pronouns + { + find: ".pronouns,children", + replacement: [ + { + match: /{user:(\i),[^}]*,pronouns:(\i),[^}]*}=\i.*?;(?=return)/, + replace: "$&let vcPronounSource;[$2,vcPronounSource]=$self.useProfilePronouns($1.id);" + }, + PRONOUN_TOOLTIP_PATCH + ] + }, + // Patch the profile modal username header to use our pronoun hook instead of Discord's pronouns + { + find: ".nameTagSmall)", + replacement: [ + { + match: /\.getName\(\i\);(?<=displayProfile.{0,200})/, + replace: "$&const [vcPronounce,vcPronounSource]=$self.useProfilePronouns(arguments[0].user.id,true);if(arguments[0].displayProfile&&vcPronounce)arguments[0].displayProfile.pronouns=vcPronounce;" + }, + PRONOUN_TOOLTIP_PATCH + ] } ], diff --git a/src/plugins/reviewDB/index.tsx b/src/plugins/reviewDB/index.tsx index 5dc9da99..fbe43a61 100644 --- a/src/plugins/reviewDB/index.tsx +++ b/src/plugins/reviewDB/index.tsx @@ -78,6 +78,13 @@ export default definePlugin({ }, patches: [ + { + find: "showBorder:null", + replacement: { + match: /user:(\i),setNote:\i,canDM.+?\}\)/, + replace: "$&,$self.getReviewsComponent($1)" + } + }, { find: /inline:!1,profileViewedAnalytics:\i}\),/, replacement: { diff --git a/src/plugins/reviewDB/style.css b/src/plugins/reviewDB/style.css index 361db9a6..5e46b757 100644 --- a/src/plugins/reviewDB/style.css +++ b/src/plugins/reviewDB/style.css @@ -3,6 +3,10 @@ --vc-rdb-spacing-size: 8px; } +[class|="section"]:not([class|="lastSection"])+.vc-rdb-view { + margin-top: 12px; +} + .vc-rdb-badge { vertical-align: middle; margin-left: 4px; @@ -180,4 +184,4 @@ .vc-rdb-review:hover>.vc-rdb-buttons { opacity: 1; -} +} \ No newline at end of file diff --git a/src/plugins/showConnections/index.tsx b/src/plugins/showConnections/index.tsx index 4c9becde..19f6258a 100644 --- a/src/plugins/showConnections/index.tsx +++ b/src/plugins/showConnections/index.tsx @@ -24,12 +24,13 @@ import { CopyIcon, LinkIcon } from "@components/Icons"; import { Devs } from "@utils/constants"; import { copyWithToast } from "@utils/misc"; import definePlugin, { OptionType } from "@utils/types"; -import { findByCodeLazy, findByPropsLazy, findStoreLazy } from "@webpack"; +import { findByCodeLazy, findByPropsLazy, findComponentByCodeLazy, findStoreLazy } from "@webpack"; import { Text, Tooltip, UserProfileStore } from "@webpack/common"; import { User } from "discord-types/general"; import { VerifiedIcon } from "./VerifiedIcon"; +const Section = findComponentByCodeLazy(".lastSection", "children:"); const ThemeStore = findStoreLazy("ThemeStore"); const useLegacyPlatformType: (platform: string) => string = findByCodeLazy(".TWITTER_LEGACY:"); @@ -74,7 +75,7 @@ interface ConnectionPlatform { } const profilePopoutComponent = ErrorBoundary.wrap( - (props: { user: User; displayProfile?: any; }) => ( + (props: { user: User; displayProfile?: any; simplified?: boolean; }) => ( ( + (props: { id: string; simplified?: boolean; }) => ( @@ -122,7 +124,14 @@ function ConnectionsComponent({ id, theme }: { id: string, theme: string; }) { ); - return connectionsContainer; + if (simplified) + return connectionsContainer; + + return ( +
+ {connectionsContainer} +
+ ); } function CompactConnectionComponent({ connection, theme }: { connection: Connection, theme: string; }) { @@ -188,6 +197,13 @@ export default definePlugin({ description: "Show connected accounts in user popouts", authors: [Devs.TheKodeToad], patches: [ + { + find: "{isUsingGuildBio:null!==(", + replacement: { + match: /,theme:\i\}\)(?=,.{0,150}setNote:)/, + replace: "$&,$self.profilePopoutComponent({ user: arguments[0].user, displayProfile: arguments[0].displayProfile })" + } + }, { find: ".PROFILE_PANEL,", replacement: { @@ -200,7 +216,7 @@ export default definePlugin({ find: '"BiteSizeProfileBody"', replacement: { match: /currentUser:\i,guild:\i}\)(?<=user:(\i),bio:null==(\i)\?.+?)/, - replace: "$&,$self.profilePopoutComponent({ user: $1, displayProfile: $2 })" + replace: "$&,$self.profilePopoutComponent({ user: $1, displayProfile: $2, simplified: true })" } } ], diff --git a/src/plugins/viewIcons/index.tsx b/src/plugins/viewIcons/index.tsx index e48fa82e..927a974f 100644 --- a/src/plugins/viewIcons/index.tsx +++ b/src/plugins/viewIcons/index.tsx @@ -192,6 +192,14 @@ export default definePlugin({ }, all: true }, + // Old Profiles Modal pfp + { + find: ".MODAL,hasProfileEffect", + replacement: { + match: /\{src:(\i)(?=,avatarDecoration)/, + replace: "{src:$1,onClick:()=>$self.openImage($1)" + } + }, // Banners ...[".NITRO_BANNER,", "=!1,canUsePremiumCustomization:"].map(find => ({ find,