diff --git a/src/plugins/friendsSince/index.tsx b/src/plugins/friendsSince/index.tsx index b290a4450..629e8e719 100644 --- a/src/plugins/friendsSince/index.tsx +++ b/src/plugins/friendsSince/index.tsx @@ -4,50 +4,64 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { classNameFactory } from "@api/Styles"; import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; import { getCurrentChannel } from "@utils/discord"; import { Logger } from "@utils/Logger"; -import { classes } from "@utils/misc"; import definePlugin from "@utils/types"; -import { findByCodeLazy, findByPropsLazy } from "@webpack"; -import { Heading, React, RelationshipStore, Text } from "@webpack/common"; +import { findByCodeLazy, findByPropsLazy, findLazy } from "@webpack"; +import { Heading, RelationshipStore, Text } from "@webpack/common"; -const container = findByPropsLazy("memberSinceWrapper"); +const containerWrapper = findByPropsLazy("memberSinceWrapper"); +const container = findByPropsLazy("memberSince"); const getCreatedAtDate = findByCodeLazy('month:"short",day:"numeric"'); const locale = findByPropsLazy("getLocale"); const lastSection = findByPropsLazy("lastSection"); - -const cl = classNameFactory("vc-friendssince-"); +const section = findLazy((m: any) => m.section !== void 0 && Object.values(m).length === 1); export default definePlugin({ name: "FriendsSince", description: "Shows when you became friends with someone in the user popout", - authors: [Devs.Elvyra], + authors: [Devs.Elvyra, Devs.Antti], patches: [ - // User popup + // User popup - old layout { find: ".USER_PROFILE}};return", replacement: { match: /,{userId:(\i.id).{0,30}}\)/, - replace: "$&,$self.friendsSince({ userId: $1 })" + replace: "$&,$self.friendsSinceOld({ userId: $1 })" } }, - // User DMs "User Profile" popup in the right + // DM User Sidebar - old layout { find: ".PROFILE_PANEL,", replacement: { match: /,{userId:([^,]+?)}\)/, - replace: "$&,$self.friendsSince({ userId: $1 })" + replace: "$&,$self.friendsSinceOld({ userId: $1 })" } }, - // User Profile Modal + // 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.friendsSince({ userId: ${userId}, textClassName: ${textClassName} })` + 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.friendsSinceNew({userId:$1,isSidebar:true})" + } + }, + // User Profile Modal - new layout + { + find: "action:\"PRESS_APP_CONNECTION\"", + replacement: { + match: /USER_PROFILE_MEMBER_SINCE,.{0,100}userId:(\i\.id),.{0,100}}\)}\),/, + replace: "$&,$self.friendsSinceNew({userId:$1,isSidebar:false})," } } ], @@ -63,7 +77,7 @@ export default definePlugin({ } }, - friendsSince: ErrorBoundary.wrap(({ userId, textClassName }: { userId: string; textClassName?: string; }) => { + friendsSinceOld: ErrorBoundary.wrap(({ userId, textClassName }: { userId: string; textClassName?: string; }) => { if (!RelationshipStore.isFriend(userId)) return null; const friendsSince = RelationshipStore.getSince(userId); @@ -71,11 +85,11 @@ export default definePlugin({ return (
- + Friends Since -
+
{!!getCurrentChannel()?.guild_id && ( )} - + {getCreatedAtDate(friendsSince, locale.getLocale())}
); - }, { noop: true }) + }, { noop: true }), + + friendsSinceNew: ErrorBoundary.wrap(({ userId, isSidebar }: { userId: string; isSidebar: boolean; }) => { + if (!RelationshipStore.isFriend(userId)) return null; + + const friendsSince = RelationshipStore.getSince(userId); + if (!friendsSince) return null; + + return ( +
+ + Friends Since + + + { + isSidebar ? ( + + {getCreatedAtDate(friendsSince, locale.getLocale())} + + ) : ( +
+
+ {!!getCurrentChannel()?.guild_id && ( + + )} + + {getCreatedAtDate(friendsSince, locale.getLocale())} + +
+
+ ) + } + +
+ ); + }, { noop: true }), }); diff --git a/src/plugins/friendsSince/styles.css b/src/plugins/friendsSince/styles.css deleted file mode 100644 index 9f73db0ba..000000000 --- a/src/plugins/friendsSince/styles.css +++ /dev/null @@ -1,12 +0,0 @@ -/* copy pasted from discord */ - -.vc-friendssince-title { - display: flex; - font-weight: 700; - margin-bottom: 6px -} - -.vc-friendssince-body { - font-size: 14px; - line-height: 18px -} diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 09fc0285b..c399baafe 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -529,6 +529,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({ nekohaxx: { name: "nekohaxx", id: 1176270221628153886n + }, + Antti: { + name: "Antti", + id: 312974985876471810n } } satisfies Record);