diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx index 600e224..e4bac80 100644 --- a/src/app/chat/page.tsx +++ b/src/app/chat/page.tsx @@ -39,8 +39,8 @@ export default function ChatHub() { {/* Greeting */}
app.setSidebarOpen(true)}>

- - Hey {app.profile?.display_name || "there"} + + Hey {app.profile?.display_name || "there"}!

Here's what's happening in your network today. diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx index 010e271..12d3920 100644 --- a/src/components/MessageBox.tsx +++ b/src/components/MessageBox.tsx @@ -140,10 +140,14 @@ export default function MessageBox({ onClick={() => app.setSidebarOpen(true)} className="cursor-pointer flex gap-2" > - + {channelIcon && ( - + )} {channelName} diff --git a/src/components/app/AppLayout.tsx b/src/components/app/AppLayout.tsx index c65f969..ec5797b 100644 --- a/src/components/app/AppLayout.tsx +++ b/src/components/app/AppLayout.tsx @@ -1,10 +1,8 @@ "use client"; -import React, { useEffect, useMemo, useState } from "react"; +import React, { useEffect } from "react"; import { cn } from "@/lib/utils"; import { useRouter } from "next/navigation"; -import { get } from "@/lib/request"; -import Cookies from "js-cookie"; import { toast } from "sonner"; import auth from "@/lib/auth"; import { useIsMobile } from "@/hooks/is-mobile"; @@ -28,7 +26,6 @@ export default function AppLayout({ server?: Server; app: App; }) { - const [query, setQuery] = useState(""); const router = useRouter(); const isMobile = useIsMobile(); @@ -80,7 +77,7 @@ export default function AppLayout({ {server ? ( ) : ( - + )}

diff --git a/src/components/app/SidebarDMs.tsx b/src/components/app/SidebarDMs.tsx index fd9832e..331be33 100644 --- a/src/components/app/SidebarDMs.tsx +++ b/src/components/app/SidebarDMs.tsx @@ -9,38 +9,41 @@ import axios from "axios"; import DMItem from "./DMItem"; import App from "@/types/app"; import { UserProfile } from "@/hooks/get-user"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; -export default function SidebarDMs({ - app, - query, - setQuery, -}: { - app: App; - query: string; - setQuery: (v: string) => void; -}) { +export default function SidebarDMs({ app }: { app: App }) { const router = useRouter(); + const [query, setQuery] = useState(""); + const [dms, setDms] = useState([]); useEffect(() => { + if (!app.profile) return; + const load = async () => { - const users = await Promise.all( - app.messages - .flatMap((m) => [m.from, m.channel_id]) - .filter((id) => id !== app.profile?.id) - .map((id) => app.getUserById(id)) - ); - app.setDms( + const users = [ + ...new Set( + await Promise.all( + app.messages + .sort((a, b) => a.timestamp - b.timestamp) + .flatMap((m) => [m.from, m.channel_id]) + .filter((id) => id !== app.profile?.id) + .map((id) => app.getUserById(id)) + ) + ), + ].filter((v) => !!v); + + app.setDms(users); + + setDms( users.filter( (user) => - user && - (user.username.toLowerCase().includes(query.toLowerCase()) || - user.id.toLowerCase().includes(query.toLowerCase())) - ) as UserProfile[] + user?.username.toLowerCase().includes(query.toLowerCase()) || + user?.display_name.toLowerCase().includes(query.toLowerCase()) + ) ); }; load(); - }, [query]); + }, [query, app.messages, app.profile]); return (
@@ -58,7 +61,7 @@ export default function SidebarDMs({
- {app.dms.map((user) => ( + {dms.map((user) => ( ))} - {app.dms.length === 0 && query.trim() !== "" && ( + {dms.length === 0 && query.trim() !== "" && (