refactor: disable iframe in message markdown render

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

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

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

Loading…
Cancel
Save