refactor: disable iframe in message markdown render

chore/cli-prune-script
moonrailgun 3 months ago
parent f74647fb30
commit 677faa0b35

@ -54,7 +54,7 @@ const MarkdownPanel: React.FC = React.memo(() => {
render={(dataMap: Record<string, string>) => {
return (
<MainContent>
<Markdown raw={dataMap['markdown'] ?? ''} />
<Markdown raw={dataMap['markdown'] ?? ''} allowIframe={true} />
</MainContent>
);
}}

@ -13,8 +13,9 @@ const ReactMarkdown = Loadable(() => import('react-markdown'));
export const Markdown: React.FC<{
raw: string;
allowIframe?: boolean;
baseUrl?: string;
}> = React.memo(({ raw, baseUrl }) => {
}> = React.memo(({ raw, baseUrl, allowIframe }) => {
const { t } = useTranslation();
const transformUrl = useCallback(
(url: string) => {
@ -46,6 +47,10 @@ export const Markdown: React.FC<{
),
svg: () => <div>not support svg</div>,
iframe: (props) => {
if (!allowIframe) {
return <div>{t('不支持iframe')}</div>;
}
let src = props.src;
if (!src) {
@ -53,7 +58,7 @@ export const Markdown: React.FC<{
}
if (!src.startsWith('http')) {
return <div>only support http source</div>;
return <div>{t('只支持http路径')}</div>;
}
if (src && src.includes('?')) {
@ -61,6 +66,8 @@ export const Markdown: React.FC<{
}
return <iframe {...props} src={src} />;
},
embed: () => <div>{t('不支持embed')}</div>,
html: () => <div>{t('不支持自定义HTML')}</div>,
style: () => <div>{t('不支持自定义样式')}</div>,
meta: () => <div>{t('不支持自定义Meta')}</div>,
}),

@ -24,7 +24,7 @@ export const DocumentMarkdownRender: React.FC<{ url: string }> = React.memo(
return <Problem text={String(error)} />;
}
return <Markdown raw={String(value)} baseUrl={url} />;
return <Markdown raw={String(value)} baseUrl={url} allowIframe={true} />;
}
);
DocumentMarkdownRender.displayName = 'DocumentMarkdownRender';

Loading…
Cancel
Save