import React, { useCallback } from "react"; import type { FunctionComponent } from "react"; import { useLdo, useResource, useSubject } from "@ldo/solid-react"; import { PostShShapeType } from "../.ldo/post.shapeTypes"; import { useNavigate } from "react-router-dom"; import { PostedBy } from "./PostedBy"; export const Post: FunctionComponent<{ uri: string }> = ({ uri }) => { const navigate = useNavigate(); const mediaResource = useResource(`${uri}index.ttl`); const post = useSubject(PostShShapeType, mediaResource.uri); const { getResource } = useLdo(); const deletePost = useCallback(async () => { const postContainer = getResource(uri); const result = await postContainer.delete(); if (result.isError) { alert(result.message); } }, [uri]); if (mediaResource.isReading()) { return

Loading Post...

; } else if (mediaResource.status.isError) { return

Error: {mediaResource.status.message}

; } else if (mediaResource.isAbsent()) { return

Post does not exist.

; } return (
{post.publisher?.["@id"] && }
navigate(`/media/${encodeURIComponent(uri)}`)} style={{ cursor: "pointer" }} > {post.articleBody &&

{post.articleBody}

} {post.image && }
); };