"use client"; import { Message } from "@/types/types"; import { Button } from "./ui/button"; import { Input } from "./ui/input"; import * as emoji from "emoji-picker-react"; import EmojiPicker from "emoji-picker-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "./ui/dropdown-menu"; import { ChevronLeftIcon, SendIcon, SmilePlusIcon } from "lucide-react"; import { useRef, useState } from "react"; import { format, isToday, isYesterday } from "date-fns"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { UserProfile } from "@/hooks/get-user"; import ProfilePicture from "./ProfilePicture"; import App from "@/types/app"; import { Textarea } from "./ui/textarea"; function MessageContainer({ message, app }: { message: Message; app: App }) { const [profile, setProfile] = useState(); app.getUserById(message.from).then(setProfile); return (
{/*
*/}
{profile?.display_name || message.from}

{isToday(message.timestamp * 1000) ? format(message.timestamp * 1000, "p") : isYesterday(message.timestamp * 1000) ? "Yesterday, " + format(message.timestamp * 1000, "p") : format(message.timestamp * 1000, "PP, p")}

{message.contents.split("\n\n").map((line, index) => (
{index > 0 &&
} (

), h2: ({ node, ...props }) => (

), h3: ({ node, ...props }) => (

), h4: ({ node, ...props }) => (

), h5: ({ node, ...props }) => (

), ul: ({ node, ...props }) => (
    ), ol: ({ node, ...props }) => (
      ), a: ({ node, ...props }) => ( ), }} > {line}
))}
); } export default function MessageBox({ app, sendMessage, channelName, messages, }: { app: App; sendMessage: (m: string) => void; channelName?: string; messages: Message[]; }) { const [text, setText] = useState(""); const inputRef = useRef(null); return (
{channelName && (
app.setSidebarOpen(true)} className="cursor-pointer flex" > {channelName}
)}
{messages.toReversed().map((msg) => ( ))}