diff --git a/packages/web/src/javascripts/Components/SuperEditor/SuperNoteImporter.tsx b/packages/web/src/javascripts/Components/SuperEditor/SuperNoteImporter.tsx index ade3f2897..9b56c7a46 100644 --- a/packages/web/src/javascripts/Components/SuperEditor/SuperNoteImporter.tsx +++ b/packages/web/src/javascripts/Components/SuperEditor/SuperNoteImporter.tsx @@ -18,8 +18,18 @@ type Props = { onComplete: () => void } +function isValidJson(string: string) { + try { + JSON.parse(string) + } catch (e) { + return false + } + return true +} + export const SuperNoteImporter: FunctionComponent = ({ note, application, closeDialog, onComplete }) => { const isSeamlessConvert = note.text.length === 0 + const canBeConvertedAsIs = isValidJson(note.text) const [lastValue, setLastValue] = useState({ text: '', previewPlain: '' }) const format = @@ -79,8 +89,8 @@ export const SuperNoteImporter: FunctionComponent = ({ note, application, onComplete() }, [closeDialog, application, note, onComplete, performConvert]) - const modalActions: ModalAction[] = useMemo( - () => [ + const modalActions = useMemo( + (): ModalAction[] => [ { label: 'Cancel', onClick: closeDialog, @@ -97,9 +107,10 @@ export const SuperNoteImporter: FunctionComponent = ({ note, application, label: 'Convert As-Is', onClick: convertAsIs, type: 'secondary', + hidden: !canBeConvertedAsIs, }, ], - [closeDialog, confirmConvert, convertAsIs], + [canBeConvertedAsIs, closeDialog, confirmConvert, convertAsIs], ) if (isSeamlessConvert) {