From 1581938c64e86c52b427912f81081abeb0b6c3a8 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sun, 26 Oct 2025 20:22:25 +0100 Subject: [PATCH] Better hub --- src/app/chat/page.tsx | 120 ++++++++++++++++++++++++++++++---- src/components/AsyncValue.tsx | 19 ++++++ 2 files changed, 126 insertions(+), 13 deletions(-) create mode 100644 src/components/AsyncValue.tsx diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx index 4996c92..3cbcd61 100644 --- a/src/app/chat/page.tsx +++ b/src/app/chat/page.tsx @@ -12,30 +12,42 @@ import { Server } from "@/types/types"; import { motion } from "framer-motion"; import { ChevronLeft, + ChevronRight, MessageCircle, Users, - PlusCircle, Settings, - ChevronRight, + PlusCircle, } from "lucide-react"; import Link from "next/link"; import StartNewDM from "./StartNewDM"; +import AsyncValue from "@/components/AsyncValue"; export default function ChatHub() { const app = useApp(); const recentDMs = app.dms?.slice(0, 5) || []; - // const activeServers = app.servers?.slice(0, 5) || []; - const activeServers: Server[] = []; + const activeServers: Server[] = Object.values(app.servers).slice(0, 5) || []; + const suggestedServers: Server[] = [ + { id: "1", name: "Frontend Devs", icon_url: "", channels: [] }, + { id: "2", name: "Gamers Lounge", icon_url: "", channels: [] }, + { id: "3", name: "Music Hub", icon_url: "", channels: [] }, + ]; + const recentActivity = app.messages.slice(0, 5); + + const stats = { + dms: app.dms?.length || 0, + servers: app.servers?.length || 0, + // friends: app.friends?.length || 0, + }; return ( -
+
{/* Greeting */}
app.setSidebarOpen(true)}> @@ -44,10 +56,11 @@ export default function ChatHub() { Hey {app.profile?.display_name || "there"}!

- Here's what's happening in your network today. + Here’s what’s happening in your network today.

+ {/* Recent DMs + Active Servers */}
{/* Recent DMs */} @@ -63,7 +76,7 @@ export default function ChatHub() { - + {srv.name} @@ -117,11 +133,89 @@ export default function ChatHub() {
+ {/* Recent Activity Feed */} + + + + + Recent Activity + + + + {recentActivity.length ? ( + recentActivity.map((msg) => ( + app.getUserById(msg.from)} + render={({ value: user }) => ( + +
+ +
+

+ {user?.display_name || ""} +

+

+ {msg.contents} +

+
+
+ + + + )} + /> + )) + ) : ( +

+ No recent messages yet. +

+ )} +
+
+ + {/* Server Discovery */} + + + + + Discover Servers + + + +
+ {suggestedServers.map((srv) => ( + + + + +

{srv.name}

+ +
+
+
+ ))} +
+
+
+ {/* Quick Actions */} -
- {/*

Quick Actions

*/} +