fix: inherit custom media renderer in nested RichText components

Previously, nested RichText components (like those in QuotedEvent/KindRenderer)
would always reset the media renderer context to null because the provider
used `renderMedia ?? null`. This caused embedded events in chat to use
the default media renderer instead of ChatMediaRenderer.

Now RichText inherits the parent media renderer when no explicit renderMedia
prop is passed, allowing custom renderers to work throughout the entire
rich text subtree including quoted events.

https://claude.ai/code/session_01AeeN5d5EcVLGjZbGueZxaD
This commit is contained in:
Claude
2026-01-30 11:04:28 +00:00
parent 9995f6fa3b
commit abf786ac35

View File

@@ -146,6 +146,9 @@ export function RichText({
renderMedia,
children,
}: RichTextProps) {
// Get parent media renderer to inherit if not explicitly overridden
const parentMediaRenderer = useMediaRenderer();
// Merge provided options with defaults
const mergedOptions: Required<RichTextOptions> = {
...defaultOptions,
@@ -191,7 +194,9 @@ export function RichText({
return (
<DepthContext.Provider value={depth}>
<OptionsContext.Provider value={mergedOptions}>
<MediaRendererContext.Provider value={renderMedia ?? null}>
<MediaRendererContext.Provider
value={renderMedia !== undefined ? renderMedia : parentMediaRenderer}
>
<EventContext.Provider value={event ?? null}>
<div
dir="auto"