diff --git a/src/app/api/user/route.ts b/src/app/api/user/route.ts index accbb9e..3bab295 100644 --- a/src/app/api/user/route.ts +++ b/src/app/api/user/route.ts @@ -84,7 +84,7 @@ export async function GET(req: NextRequest) { { status: StatusCodes.BAD_REQUEST } ); else { - const id = query_id ? query_id : token ? CLIENT_AUTH_TOKENS[token] : null; + const id = query_id ? parseInt(query_id) : token ? CLIENT_AUTH_TOKENS[token] : null; if (!id) return NextResponse.json( diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 546cc95..40cd949 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -6,6 +6,8 @@ import axios from "axios"; import { useState } from "react"; import Cookies from "js-cookie"; import { redirect } from "next/navigation"; +import { Label } from "@/components/ui/label"; +import Link from "next/link"; export default function Login() { const [username, setUsername] = useState(""); @@ -35,7 +37,11 @@ export default function Login() { /> - diff --git a/src/app/server/[id]/page.tsx b/src/app/server/[id]/page.tsx index 0837937..ccb8c58 100644 --- a/src/app/server/[id]/page.tsx +++ b/src/app/server/[id]/page.tsx @@ -8,7 +8,7 @@ import Message from "@/types/message"; import useUser, { User } from "@/hooks/get-user"; import Cookies from "js-cookie"; import axios from "axios"; -import { StringMap } from "@/types/typeUtils"; +import { NumberMap, StringMap } from "@/types/typeUtils"; import ServerType from "@/types/server"; export default function Server() { @@ -17,7 +17,7 @@ export default function Server() { const wsRef = useRef(null); const [messages, setMessages] = useState([]); const { user, loading } = useUser(); - const [userList, setUserList] = useState>({}); + const [userList, setUserList] = useState>({}); useEffect(() => { if (!ip || !user || loading) return; @@ -86,6 +86,7 @@ export default function Server() { m.channel_id === "general") .toReversed()} diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx index 05e1b42..0170aaf 100644 --- a/src/components/MessageBox.tsx +++ b/src/components/MessageBox.tsx @@ -11,20 +11,32 @@ import { DropdownMenuTrigger, } from "./ui/dropdown-menu"; import { SmilePlusIcon } from "lucide-react"; -import { useRef, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { format, isToday, isYesterday } from "date-fns"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; -import { StringMap } from "@/types/typeUtils"; +import { NumberMap, StringMap } from "@/types/typeUtils"; import { User } from "@/hooks/get-user"; +import axios from "axios"; function MessageContainer({ message, userList, + setUserList, }: { message: Message; - userList: StringMap; + userList: NumberMap; + setUserList: React.Dispatch>>; }) { + useEffect(() => { + axios + .get("/api/user/", { params: { id: message.from } }) + .then((res) => + setUserList((prev) => ({ ...prev, [message.from]: res.data as User })) + ) + .catch(console.error); + }, [message.from, setUserList]); + return (
@@ -117,10 +129,12 @@ function MessageContainer({ export default function MessageBox({ messages, userList, + setUserList, sendMessage, }: { messages: Message[]; - userList: StringMap; + userList: NumberMap; + setUserList: React.Dispatch>>; sendMessage: (m: string) => void; }) { const [text, setText] = useState(""); @@ -129,7 +143,12 @@ export default function MessageBox({
{messages.map((msg) => ( - + ))}
diff --git a/src/types/typeUtils.ts b/src/types/typeUtils.ts index 8523d32..851514e 100644 --- a/src/types/typeUtils.ts +++ b/src/types/typeUtils.ts @@ -2,10 +2,14 @@ export type StringMap = { [key: string]: T; }; +export type NumberMap = { + [key: number]: T; +}; + export function narrow(s: T, defd: T, ...allowed: T[]): T { - if (allowed.includes(s) || s == defd) { - return s; - } else { - return defd; - } -} \ No newline at end of file + if (allowed.includes(s) || s == defd) { + return s; + } else { + return defd; + } +}