2024-07-28 01:04:08 +02:00
|
|
|
import React, {useEffect, useState} from "react";
|
2024-07-26 16:45:10 +02:00
|
|
|
import snarkdown from "snarkdown"
|
2024-08-26 18:36:51 +02:00
|
|
|
import {Skeleton, Typography} from "antd";
|
2024-07-28 01:04:08 +02:00
|
|
|
import axios from "axios";
|
2024-08-26 18:36:51 +02:00
|
|
|
import {t} from "ttag";
|
2024-07-23 18:37:59 +02:00
|
|
|
|
2024-07-28 01:04:08 +02:00
|
|
|
export default function TextPage({resource}: { resource: string }) {
|
2024-08-26 18:36:51 +02:00
|
|
|
const [loading, setLoading] = useState<boolean>(false)
|
|
|
|
|
const [markdown, setMarkdown] = useState<string | undefined>(undefined)
|
2024-07-28 01:04:08 +02:00
|
|
|
|
|
|
|
|
useEffect(() => {
|
2024-08-26 18:36:51 +02:00
|
|
|
setLoading(true)
|
|
|
|
|
axios.get('/content/' + resource)
|
|
|
|
|
.then(res => setMarkdown(res.data))
|
|
|
|
|
.catch(err => {
|
|
|
|
|
console.error(err)
|
|
|
|
|
setMarkdown(undefined)
|
|
|
|
|
})
|
|
|
|
|
.finally(() => setLoading(false))
|
2024-07-28 01:04:08 +02:00
|
|
|
}, [resource])
|
|
|
|
|
|
2024-08-26 18:36:51 +02:00
|
|
|
return <Skeleton loading={loading} active>
|
|
|
|
|
{markdown !== undefined ? <div
|
|
|
|
|
dangerouslySetInnerHTML={{__html: snarkdown(markdown)}}></div> :
|
|
|
|
|
<Typography.Text strong>
|
|
|
|
|
{t`📝 Please create /public/content/${resource} file.`}
|
|
|
|
|
</Typography.Text>}
|
2024-07-28 01:04:08 +02:00
|
|
|
</Skeleton>
|
2024-07-26 16:45:10 +02:00
|
|
|
}
|