import VisibilityBadge from "../badges/visibility-badge" import FadeIn from "@components/fade-in" import ExpirationBadge from "@components/badges/expiration-badge" import CreatedAgoBadge from "@components/badges/created-ago-badge" import { useRouter } from "next/navigation" import styles from "./list-item.module.css" import Link from "@components/link" import type { PostWithFiles } from "@lib/server/prisma" import Tooltip from "@components/tooltip" import Badge from "@components/badges/badge" import Card from "@components/card" import Button from "@components/button" import { ArrowUpCircle, Code, Database, Edit, FileText, Terminal, Trash } from "react-feather" import { codeFileExtensions } from "@lib/constants" // TODO: isOwner should default to false so this can be used generically const ListItem = ({ post, isOwner, deletePost, hideActions }: { post: PostWithFiles isOwner?: boolean deletePost: () => void hideActions?: boolean }) => { const router = useRouter() const editACopy = () => { router.push(`/new/from/${post.id}`) } const viewParentClick = () => { router.push(`/post/${post.parentId}`) } const getIconFromFilename = (filename: string) => { const extension = filename.split(".").pop() switch (extension) { case "sql": return case "sh": case "fish": case "bash": case "zsh": case ".zshrc": case ".bashrc": case ".bash_profile": return default: if (codeFileExtensions.includes(extension || "")) { return } else { return } } } return (
  • <>

    {post.title}

    {post.files?.length === 1 ? "1 file" : `${post.files?.length || 0} files`}
    {!hideActions ? ( {post.parentId && (
    {post.description && (

    {post.description}

    )}
      {post?.files?.map( (file: Pick["files"][0]) => { return (
    • {getIconFromFilename(file.title)} {file.title || "Untitled file"}
    • ) } )}
  • ) } export default ListItem