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,