From 191d04207dc06b35dc3708f61e403809ada058ec Mon Sep 17 00:00:00 2001 From: nghiphaam Date: Sat, 4 Apr 2026 13:21:23 +0700 Subject: [PATCH 1/3] correct key placement for popover items --- src/api/MessagePopover.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/MessagePopover.tsx b/src/api/MessagePopover.tsx index d278d58de1..90f9182e58 100644 --- a/src/api/MessagePopover.tsx +++ b/src/api/MessagePopover.tsx @@ -78,8 +78,8 @@ function VencordPopoverButtons(props: { Component: React.ComponentType - + + ); } catch (err) { From a66631fd068aa5a9be7e1d5ef7ce443521867e4c Mon Sep 17 00:00:00 2001 From: nghiphaam Date: Sat, 4 Apr 2026 13:22:18 +0700 Subject: [PATCH 2/3] avoid calling plugin render functions outside React --- src/api/MessagePopover.tsx | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/api/MessagePopover.tsx b/src/api/MessagePopover.tsx index 90f9182e58..c519f241d5 100644 --- a/src/api/MessagePopover.tsx +++ b/src/api/MessagePopover.tsx @@ -64,6 +64,19 @@ export function removeMessagePopoverButton(identifier: string) { MessagePopoverButtonMap.delete(identifier); } +function VencordPopoverButton(props: { + Component: React.ComponentType; + message: Message; + render: MessagePopoverButtonFactory; +}) { + const { Component, message, render } = props; + const item = render(message); + + if (!item) return null; + + return ; +} + function VencordPopoverButtons(props: { Component: React.ComponentType, message: Message; }) { const { Component, message } = props; @@ -72,20 +85,11 @@ function VencordPopoverButtons(props: { Component: React.ComponentType messagePopoverButtons[key]?.enabled !== false) .map(([key, { render }]) => { - try { - // FIXME: this should use proper React to ensure hooks work - const item = render(message); - if (!item) return null; - - return ( - - - - ); - } catch (err) { - logger.error(`[${key}]`, err); - return null; - } + return ( + logger.error(`[${key}]`, e.error)}> + + + ); }); return <>{elements}; From e098a63624c23810c671c14238de2592dd86eb00 Mon Sep 17 00:00:00 2001 From: nghiphaam Date: Sat, 4 Apr 2026 13:53:41 +0700 Subject: [PATCH 3/3] safe error logging --- src/api/ChatButtons.tsx | 2 +- src/api/MessagePopover.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/ChatButtons.tsx b/src/api/ChatButtons.tsx index ebb5eb5e5b..8a538089c1 100644 --- a/src/api/ChatButtons.tsx +++ b/src/api/ChatButtons.tsx @@ -104,7 +104,7 @@ function VencordChatBarButtons(props: ChatBarProps) { {Array.from(ChatBarButtonMap) .filter(([key]) => chatBarButtons[key]?.enabled !== false) .map(([key, { render: Button }]) => ( - logger.error(`Failed to render ${key}`, e.error)}> +