diff --git a/src/equicordplugins/friendshipRanks/index.tsx b/src/equicordplugins/friendshipRanks/index.tsx index ff91f1cbd..c33b57b9e 100644 --- a/src/equicordplugins/friendshipRanks/index.tsx +++ b/src/equicordplugins/friendshipRanks/index.tsx @@ -6,7 +6,7 @@ import "./styles.css"; -import { BadgePosition, BadgeUserArgs, ProfileBadge } from "@api/Badges"; +import { BadgePosition, BadgeUserArgs } from "@api/Badges"; import { Badges } from "@api/index"; import ErrorBoundary from "@components/ErrorBoundary"; import { Flex } from "@components/Flex"; @@ -121,8 +121,9 @@ function shouldShowBadge(userId: string, requirement: number, index: number) { } function getBadgesToApply() { - const badgesToApply: ProfileBadge[] = ranks.map((rank, index) => { + return ranks.map((rank, index) => { return ({ + id: `friendship_ranks_badge_${index}`, description: rank.title, iconSrc: rank.iconSrc, position: BadgePosition.END, @@ -136,8 +137,6 @@ function getBadgesToApply() { }, }); }); - - return badgesToApply; } export default definePlugin({ diff --git a/src/equicordplugins/pendingFriendRequest/index.tsx b/src/equicordplugins/pendingFriendRequest/index.tsx new file mode 100644 index 000000000..43c5f6942 --- /dev/null +++ b/src/equicordplugins/pendingFriendRequest/index.tsx @@ -0,0 +1,94 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2026 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import type { NavContextMenuPatchCallback } from "@api/ContextMenu"; +import { EquicordDevs } from "@utils/constants"; +import definePlugin from "@utils/types"; +import { RelationshipType } from "@vencord/discord-types/enums"; +import { findByPropsLazy } from "@webpack"; +import { Menu, RelationshipStore } from "@webpack/common"; + +const RelationshipActions = findByPropsLazy("cancelFriendRequest", "addRelationship"); + +function isOutgoingFriendRequest(userId: string) { + return RelationshipStore.getRelationshipType(userId) === RelationshipType.OUTGOING_REQUEST; +} + +function cancelOutgoingFriendRequest(userId: string) { + if (!isOutgoingFriendRequest(userId)) return; + return RelationshipActions.cancelFriendRequest(userId); +} + +const userContextPatch: NavContextMenuPatchCallback = (children, { user }) => { + if (!user || !isOutgoingFriendRequest(user.id)) return; + + children.push( +