diff --git a/web/src/components/ChatBox/ChatMessageList/Item.tsx b/web/src/components/ChatBox/ChatMessageList/Item.tsx index e1727016..8d7bddc8 100644 --- a/web/src/components/ChatBox/ChatMessageList/Item.tsx +++ b/web/src/components/ChatBox/ChatMessageList/Item.tsx @@ -13,7 +13,7 @@ import { } from 'tailchat-shared'; import { Avatar } from '@/components/Avatar'; import { useRenderPluginMessageInterpreter } from './useRenderPluginMessageInterpreter'; -import { getMessageRender } from '@/plugin/common'; +import { getMessageRender, pluginMessageExtraParsers } from '@/plugin/common'; import { Icon } from '@iconify/react'; import { Divider, Dropdown } from 'antd'; import { UserName } from '@/components/UserName'; @@ -110,6 +110,15 @@ const NormalMessage: React.FC = React.memo((props) => { {reactions} + + {/* 额外渲染 */} +
+ {pluginMessageExtraParsers.map((parser) => ( + + {parser.render(payload)} + + ))} +
{/* 操作 */} diff --git a/web/src/plugin/common/reg.ts b/web/src/plugin/common/reg.ts index 44d1ea5b..dc4c1031 100644 --- a/web/src/plugin/common/reg.ts +++ b/web/src/plugin/common/reg.ts @@ -2,6 +2,7 @@ import type { ChatInputActionContextProps } from '@/components/ChatBox/ChatInput import { buildRegFn, buildRegList, + ChatMessage, FastFormFieldMeta, regSocketEventListener, } from 'tailchat-shared'; @@ -120,3 +121,11 @@ export const [pluginInspectServices, regInspectService] = buildRegList<{ label: string; name: string; }>(); + +/** + * 注册对消息的额外解释函数 + */ +export const [pluginMessageExtraParsers, regMessageExtraParser] = buildRegList<{ + name: string; + render: (payload: ChatMessage) => React.ReactNode; +}>();