import { useState } from 'react' import { useLoaderData } from 'react-router-dom' import StarterKit from '@tiptap/starter-kit' import Link from '@tiptap/extension-link' import Image from '@tiptap/extension-image' import { EditorContent, useEditor } from '@tiptap/react' import DOMPurify from 'dompurify' import { marked } from 'marked' import { LoadingSpinner } from 'components/LoadingSpinner' import { ProfileSection } from 'components/ProfileSection' import { Comments } from 'components/comment' import { Addressable, BlogPageLoaderResult } from 'types' import placeholder from '../../assets/img/DEGMods Placeholder Img.png' import { PublishDetails } from 'components/Internal/PublishDetails' import { Interactions } from 'components/Internal/Interactions' import { BlogCard } from 'components/BlogCard' export const BlogPage = () => { const { blog, latest } = useLoaderData() as BlogPageLoaderResult const [commentCount, setCommentCount] = useState(0) const html = marked.parse(blog?.content || '', { async: false }) const sanitized = DOMPurify.sanitize(html) const editor = useEditor( { content: sanitized, extensions: [ StarterKit, Link, Image.configure({ inline: true, HTMLAttributes: { class: 'IBMSMSMBSSPostImg' } }) ], editable: false }, [sanitized] ) return (
{!blog ? ( ) : (
{/* */}

{blog.title}

{blog.nsfw && (

NSFW

)} {blog.tTags && blog.tTags.map((t) => ( {t} ))}
{!!latest.length && (

Latest blog posts

{latest.map((b) => ( ))}
)}
)} {!!blog?.author && }
) }