Files
project-gifuu/frontend/source/components/views/Text.tsx
T
2026-05-23 17:17:56 -07:00

40 lines
1.1 KiB
TypeScript

import { useEffect } from 'react'
import { wtEvent } from '../../functions/Watchtower'
import { setTitle } from '../../functions/Route'
import './styles/Text.css'
import HeaderMessage from '../layout/HeaderMessage'
import HeaderError from '../layout/HeaderError'
/**
* Load article from index.html using the 'include-article' placeholder
*/
interface PropsForViewText {
id: string
}
export default function ViewText({ id }: PropsForViewText) {
const template = document.head.querySelectorAll('template.article')
const relevant = [...template].find((e) => e.id === id)
useEffect(() => {
const t = Date.now()
return () => {
wtEvent('view_article', { id, duration: Date.now() - t })
}
}, [])
if (!relevant) {
return <HeaderError reason="Unknown Article" />
}
setTitle(`Article: ${id}`)
return (
<>
<HeaderMessage label={`Article <ID: ${id}>`} />
<article className="view-document" dangerouslySetInnerHTML={{ __html: relevant.innerHTML }} />
</>
)
}