pages235/src/react/MessageFormattedString.tsx
2024-03-11 00:09:09 +03:00

19 lines
730 B
TypeScript

import { useMemo } from 'react'
import { fromFormattedString } from '@xmcl/text-component'
import { formatMessage } from '../botUtils'
import MessageFormatted from './MessageFormatted'
/** like MessageFormatted, but receives raw string or json instead, uses window.loadedData */
export default ({ message }: { message: string | Record<string, any> | null }) => {
const messageJson = useMemo(() => {
if (!message) return null
try {
return formatMessage(typeof message === 'string' ? fromFormattedString(message) : message)
} catch (err) {
console.error(err) // todo ensure its being logged
return null
}
}, [message])
return messageJson ? <MessageFormatted parts={messageJson} /> : null
}