import { Link } from 'react-router-dom' import { Paper, Skeleton, Box, Badge, Text, Group, ThemeIcon } from '@mantine/core' import { IconUser, IconMessages } from '@tabler/icons-react' import { useGetUserByIdQuery } from '../app/api/users' import { useGetPanelByIdQuery } from '../app/api/panels' import type { Post } from '../app/types/common' const FeedPost = ({ post, hidePanel, hideAuthor }: { post: Post, hidePanel?: boolean, hideAuthor?: boolean }) => { // Fetch panel info let panelElement: React.ReactNode = null const { data: panelData, isLoading: panelIsLoading } = useGetPanelByIdQuery({ id: post.panelId }) if (!hidePanel) { if (panelIsLoading) { panelElement = } else if (!panelData) { panelElement = Error Loading Panel Data } else { panelElement = ( } component={Link} to={`/panel/${panelData.name}`} > {`panel/${panelData.name}`} ) } } // Fetch author info let authorElement: React.ReactNode = null const { data: authorData, isLoading: authorIsLoading } = useGetUserByIdQuery({ id: post.authorId }) if (!hideAuthor) { if (authorIsLoading) { authorElement = } else if (!authorData) { authorElement = Error Loading Author Data } else { authorElement = ( } component={Link} to={`/user/${authorData.username}`} > {`user/${authorData.username}`} ) } } return ( {panelElement} {authorElement} {post.title} {post.content} Click to View ) } export default FeedPost