1
0

Show a page not found in set language if a markdown content does not exist.

This commit is contained in:
Kevin Matsubara 2025-02-21 21:17:39 +01:00
parent 0112d23229
commit 4de65c1fe5

View File

@ -4,6 +4,7 @@ import SyntaxHighlighter from 'react-syntax-highlighter';
// https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/HEAD/AVAILABLE_STYLES_HLJS.MD // https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/HEAD/AVAILABLE_STYLES_HLJS.MD
import { docco, dracula } from 'react-syntax-highlighter/dist/esm/styles/hljs'; import { docco, dracula } from 'react-syntax-highlighter/dist/esm/styles/hljs';
import { useTheme } from '../ThemeContext'; import { useTheme } from '../ThemeContext';
import { getLanguage } from '../Language/Language';
const MySection = ({ children }) => { const MySection = ({ children }) => {
return (<section>{children}</section>); return (<section>{children}</section>);
@ -98,6 +99,9 @@ const MyTable = ({ children }) => {
const MarkdownPage = ({ md }) => { const MarkdownPage = ({ md }) => {
const [markdownContent, setPost] = useState(''); const [markdownContent, setPost] = useState('');
const [pageNotFound, setPageNotFound] = useState(false);
const [errorPageContent, setErrorPage] = useState('');
const language = getLanguage();
// causes 3 calls somehow... // causes 3 calls somehow...
useEffect(() => { useEffect(() => {
@ -108,46 +112,67 @@ const MarkdownPage = ({ md }) => {
.then(res => setPost(res)) .then(res => setPost(res))
.catch(err => console.log(err)); .catch(err => console.log(err));
}) })
.catch(err => console.log(err)); .catch(err => {
console.log(err);
setPageNotFound(true);
import(`./Other/${language}/page-not-found.md`)
.then(res => {
fetch(res.default)
.then(res => res.text())
.then(res => setErrorPage(res))
.catch(err => console.log(err));
})
.catch(err => console.log(err));
});
}); });
return ( if (pageNotFound) {
<Markdown return (
options={{ <Markdown>
wrapper: MySection, {errorPageContent}
overrides: { </Markdown>
h1: { );
component: MyParagraph, }
props: { else {
className: 'text-primary', return (
<Markdown
options={{
wrapper: MySection,
overrides: {
h1: {
component: MyParagraph,
props: {
className: 'text-primary',
},
}, },
h4: {
component: Myh4
},
h5: {
component: Myh5
},
img: {
component: MyImage
},
code: {
component: MyCodeBlock
},
table: {
component: MyTable
},
Jps: {
component: Jps
},
Furigana: {
component: Furigana
}
}, },
h4: { }}>
component: Myh4 {markdownContent}
}, </Markdown>
h5: { )
component: Myh5 }
},
img: {
component: MyImage
},
code: {
component: MyCodeBlock
},
table: {
component: MyTable
},
Jps: {
component: Jps
},
Furigana: {
component: Furigana
}
},
}}>
{markdownContent}
</Markdown>
)
} }
export default MarkdownPage; export default MarkdownPage;