/* * Vencord, a Discord client mod * Copyright (c) 2024 Vendicated and contributors * SPDX-License-Identifier: GPL-3.0-or-later */ import "./styles.css"; import { BaseText } from "@components/BaseText"; import ErrorBoundary from "@components/ErrorBoundary"; import { Devs } from "@utils/constants"; import { getCurrentChannel } from "@utils/discord"; import definePlugin from "@utils/types"; import { findByCodeLazy, findByPropsLazy, findComponentByCodeLazy, findCssClassesLazy } from "@webpack"; import { RelationshipStore } from "@webpack/common"; const WrapperClasses = findCssClassesLazy("memberSinceWrapper"); const ContainerClasses = findCssClassesLazy("memberSince"); const getCreatedAtDate = findByCodeLazy('month:"short",day:"numeric"'); const locale = findByPropsLazy("getLocale"); const Section = findComponentByCodeLazy("headingVariant:", '"section"', "headingIcon:"); export default definePlugin({ name: "FriendsSince", description: "Shows when you became friends with someone in the user popout", tags: ["Friends"], authors: [Devs.Elvyra, Devs.Antti], patches: [ // DM User Sidebar { find: ".SIDEBAR}),nicknameIcons", replacement: { match: /#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id)}\)}\)/, replace: "$&,$self.FriendsSinceComponent({userId:$1,isSidebar:true})" } }, // User Profile Modal { find: ",applicationRoleConnection:", replacement: { match: /#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id),.{0,100}}\)}\),/, replace: "$&,$self.FriendsSinceComponent({userId:$1,isSidebar:false})," } }, // User Profile Modal v2 { find: ".MODAL_V2,onClose:", replacement: { match: /#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id),.{0,100}}\)}\),/, replace: "$&,$self.FriendsSinceComponent({userId:$1,isSidebar:false})," } } ], FriendsSinceComponent: ErrorBoundary.wrap(({ userId, isSidebar }: { userId: string; isSidebar: boolean; }) => { if (!RelationshipStore.isFriend(userId)) return null; const friendsSince = RelationshipStore.getSince(userId); if (!friendsSince) return null; if (isSidebar) { return (
{getCreatedAtDate(friendsSince, locale.getLocale())}
); } return (
{!!getCurrentChannel()?.guild_id && ( )} {getCreatedAtDate(friendsSince, locale.getLocale())}
); }, { noop: true }), });