mirror of
https://github.com/Equicord/Equicord.git
synced 2025-01-18 21:33:35 -05:00
Reverts
This commit is contained in:
parent
21b3af6308
commit
6d00d6826b
10 changed files with 192 additions and 10 deletions
|
@ -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",
|
||||
|
|
|
@ -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 (
|
||||
<div className={UserPopoutSectionCssClasses.lastSection} ></div>
|
||||
);
|
||||
}),
|
||||
|
||||
get noSpellCheck() {
|
||||
return settings.store.noSpellCheck;
|
||||
}
|
||||
|
|
|
@ -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 (
|
||||
<div className={lastSection.section}>
|
||||
<Heading variant="eyebrow">
|
||||
Friends Since
|
||||
</Heading>
|
||||
|
||||
<div className={containerWrapper.memberSinceWrapper}>
|
||||
{!!getCurrentChannel()?.guild_id && (
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
fill="var(--interactive-normal)"
|
||||
>
|
||||
<path d="M13 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" />
|
||||
<path d="M3 5v-.75C3 3.56 3.56 3 4.25 3s1.24.56 1.33 1.25C6.12 8.65 9.46 12 13 12h1a8 8 0 0 1 8 8 2 2 0 0 1-2 2 .21.21 0 0 1-.2-.15 7.65 7.65 0 0 0-1.32-2.3c-.15-.2-.42-.06-.39.17l.25 2c.02.15-.1.28-.25.28H9a2 2 0 0 1-2-2v-2.22c0-1.57-.67-3.05-1.53-4.37A15.85 15.85 0 0 1 3 5Z" />
|
||||
</svg>
|
||||
)}
|
||||
<Text variant="text-sm/normal" className={textClassName}>
|
||||
{getCreatedAtDate(friendsSince, locale.getLocale())}
|
||||
</Text>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}, { noop: true }),
|
||||
|
||||
friendsSinceNew: ErrorBoundary.wrap(({ userId, isSidebar }: { userId: string; isSidebar: boolean; }) => {
|
||||
if (!RelationshipStore.isFriend(userId)) return null;
|
||||
|
||||
const friendsSince = RelationshipStore.getSince(userId);
|
||||
|
|
|
@ -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: [
|
||||
|
|
|
@ -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: [
|
||||
|
|
|
@ -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
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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; }) => (
|
||||
<ConnectionsComponent
|
||||
{...props}
|
||||
id={props.user.id}
|
||||
|
@ -85,7 +86,7 @@ const profilePopoutComponent = ErrorBoundary.wrap(
|
|||
);
|
||||
|
||||
const profilePanelComponent = ErrorBoundary.wrap(
|
||||
(props: { id: string; }) => (
|
||||
(props: { id: string; simplified?: boolean; }) => (
|
||||
<ConnectionsComponent
|
||||
{...props}
|
||||
theme={ThemeStore.theme}
|
||||
|
@ -94,7 +95,7 @@ const profilePanelComponent = ErrorBoundary.wrap(
|
|||
{ noop: true }
|
||||
);
|
||||
|
||||
function ConnectionsComponent({ id, theme }: { id: string, theme: string; }) {
|
||||
function ConnectionsComponent({ id, theme, simplified }: { id: string, theme: string, simplified?: boolean; }) {
|
||||
const profile = UserProfileStore.getUserProfile(id);
|
||||
if (!profile)
|
||||
return null;
|
||||
|
@ -105,6 +106,7 @@ function ConnectionsComponent({ id, theme }: { id: string, theme: string; }) {
|
|||
|
||||
const connectionsContainer = (
|
||||
<div style={{
|
||||
marginTop: !simplified ? "8px" : undefined,
|
||||
gap: getSpacingPx(settings.store.iconSpacing),
|
||||
flexWrap: "wrap"
|
||||
}}>
|
||||
|
@ -122,7 +124,14 @@ function ConnectionsComponent({ id, theme }: { id: string, theme: string; }) {
|
|||
</div>
|
||||
);
|
||||
|
||||
return connectionsContainer;
|
||||
if (simplified)
|
||||
return connectionsContainer;
|
||||
|
||||
return (
|
||||
<Section>
|
||||
{connectionsContainer}
|
||||
</Section>
|
||||
);
|
||||
}
|
||||
|
||||
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 })"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue