From 39db491655df64f6adb0cd4f10c1840399f8da47 Mon Sep 17 00:00:00 2001 From: sadan4 <117494111+sadan4@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:14:55 -0400 Subject: [PATCH] Badges: fix crashing (#4135) Co-authored-by: V --- src/api/Badges.ts | 4 ++++ src/components/settings/tabs/vencord/DonateButton.tsx | 2 +- src/plugins/_api/badges/index.tsx | 6 ++++-- src/plugins/platformIndicators/index.tsx | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/api/Badges.ts b/src/api/Badges.ts index 1bcdd268b..1a6d085b6 100644 --- a/src/api/Badges.ts +++ b/src/api/Badges.ts @@ -26,6 +26,10 @@ export const enum BadgePosition { } export interface ProfileBadge { + /** + * Badge id, unused by vencord, required by discord + */ + id: string, /** The tooltip to show on hover. Required for image badges */ description?: string; /** Custom component for the badge (tooltip not included) */ diff --git a/src/components/settings/tabs/vencord/DonateButton.tsx b/src/components/settings/tabs/vencord/DonateButton.tsx index 149753777..f68b7fa99 100644 --- a/src/components/settings/tabs/vencord/DonateButton.tsx +++ b/src/components/settings/tabs/vencord/DonateButton.tsx @@ -10,7 +10,7 @@ import { DONOR_ROLE_ID, VENCORD_GUILD_ID } from "@utils/constants"; import { Button, GuildMemberStore } from "@webpack/common"; export const isDonor = (userId: string) => !!( - BadgeAPI.getDonorBadges(userId)?.length > 0 + (BadgeAPI.getDonorBadges(userId)?.length ?? 0) > 0 || GuildMemberStore?.getMember(VENCORD_GUILD_ID, userId)?.roles.includes(DONOR_ROLE_ID) ); diff --git a/src/plugins/_api/badges/index.tsx b/src/plugins/_api/badges/index.tsx index 4229ee022..a00b47501 100644 --- a/src/plugins/_api/badges/index.tsx +++ b/src/plugins/_api/badges/index.tsx @@ -36,6 +36,7 @@ import { ContextMenuApi, Forms, Menu, Toasts, UserStore } from "@webpack/common" const CONTRIBUTOR_BADGE = "https://cdn.discordapp.com/emojis/1092089799109775453.png?size=64"; const ContributorBadge: ProfileBadge = { + id: "vencord_contributor_badge", description: "Vencord Contributor", iconSrc: CONTRIBUTOR_BADGE, position: BadgePosition.START, @@ -56,7 +57,7 @@ async function loadBadges(noCache = false) { let intervalId: any; -function BadgeContextMenu({ badge }: { badge: ProfileBadge & BadgeUserArgs; }) { +function BadgeContextMenu({ badge }: { badge: Omit & BadgeUserArgs; }) { return ( ({ + return DonorBadges[userId]?.map((badge, idx) => ({ + id: `vencord_donor_badge_${idx}`, iconSrc: badge.badge, description: badge.tooltip, position: BadgePosition.START, diff --git a/src/plugins/platformIndicators/index.tsx b/src/plugins/platformIndicators/index.tsx index 41adfd99d..cab11dcff 100644 --- a/src/plugins/platformIndicators/index.tsx +++ b/src/plugins/platformIndicators/index.tsx @@ -125,6 +125,7 @@ function getBadges({ userId }: BadgeUserArgs): ProfileBadge[] { return Object.entries(status).map(([platform, status]) => ({ key: `vc-platform-indicator-${platform}`, + id: `vc-platform-indicator-${platform}`, component: () => (