diff --git a/src/app/chat/[id]/page.tsx b/src/app/chat/[id]/page.tsx index 6ad5435..8ed4e7b 100644 --- a/src/app/chat/[id]/page.tsx +++ b/src/app/chat/[id]/page.tsx @@ -12,10 +12,8 @@ export default function DMs() { return ( app.setSidebarOpen(true)} + app={app} channelName={app.profiles[id]?.display_name || id} - userList={app.profiles} - setUserList={app.setProfiles} messages={app.messages .filter( (m) => diff --git a/src/app/server/[ip]/page.tsx b/src/app/server/[ip]/page.tsx index 037f0ea..82a99b2 100644 --- a/src/app/server/[ip]/page.tsx +++ b/src/app/server/[ip]/page.tsx @@ -25,10 +25,8 @@ export default function Server() { return ( app.setSidebarOpen(true)} + app={app} channelName="General" - userList={app.profiles} - setUserList={app.setProfiles} messages={app.messages .filter((m) => m.channel_id === "general") .toReversed()} diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx index 0178fd1..e95a8e8 100644 --- a/src/components/MessageBox.tsx +++ b/src/components/MessageBox.tsx @@ -10,53 +10,46 @@ import { DropdownMenuContent, DropdownMenuTrigger, } from "./ui/dropdown-menu"; -import { ChevronLeft, ChevronLeftIcon, SmilePlusIcon } from "lucide-react"; -import { useEffect, useRef, useState } from "react"; +import { ChevronLeftIcon, SmilePlusIcon } from "lucide-react"; +import { useEffect, useState } from "react"; import { format, isToday, isYesterday } from "date-fns"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; -import { NumberMap, StringMap } from "@/types/typeUtils"; import { UserProfile } from "@/hooks/get-user"; import axios from "axios"; import ProfilePicture from "./ProfilePicture"; +import { ScrollArea } from "./ui/scroll-area"; +import App from "@/types/app"; -function MessageContainer({ - message, - userList, - setUserList, -}: { - message: Message; - userList: StringMap; - setUserList: React.Dispatch>>; -}) { +function MessageContainer({ message, app }: { message: Message; app: App }) { useEffect(() => { axios .get("/api/profile/", { params: { id: message.from } }) .then((res) => - setUserList((prev) => ({ + app.setProfiles((prev) => ({ ...prev, [message.from]: res.data as UserProfile, })) ) .catch(() => {}); - }, [message.from, setUserList]); + }, [message.from]); return (
{/*
*/}
- {userList[message.from] - ? userList[message.from].display_name + {app.profiles[message.from] + ? app.profiles[message.from].display_name : message.from}

@@ -139,19 +132,15 @@ function MessageContainer({ } export default function MessageBox({ - messages, - userList, - setUserList, + app, sendMessage, channelName, - toggleSidebar, + messages, }: { - messages: Message[]; - userList: NumberMap; - setUserList: React.Dispatch>>; + app: App; sendMessage: (m: string) => void; channelName?: string; - toggleSidebar: () => void; + messages: Message[]; }) { const [text, setText] = useState(""); @@ -159,22 +148,20 @@ export default function MessageBox({

{channelName && (
- + app.setSidebarOpen(true)} + className="cursor-pointer flex" + > {channelName}
)} -
+ {messages.map((msg) => ( - + ))} -
+