Improved app-server structure

This commit is contained in:
2025-12-10 22:20:08 +01:00
parent 31bd4f32f8
commit 3ba7fa7b1a
3 changed files with 11 additions and 21 deletions
+6 -8
View File
@@ -15,7 +15,6 @@ export default function Server() {
const { ip } = useParams<{ ip: string }>(); const { ip } = useParams<{ ip: string }>();
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const serverRef = useRef<WebSocket | null>(null); const serverRef = useRef<WebSocket | null>(null);
const [server, setServer] = useState<undefined | ServerType>();
const app = useApp(); const app = useApp();
const { messages, addMessage } = useServerMessages(); const { messages, addMessage } = useServerMessages();
@@ -26,7 +25,7 @@ export default function Server() {
auth( auth(
ip, ip,
serverRef, serverRef,
setServer, app.setServer,
(m) => addMessage(ip, m), (m) => addMessage(ip, m),
() => {}, () => {},
msgs ? msgs[msgs.length - 1]?.id : undefined msgs ? msgs[msgs.length - 1]?.id : undefined
@@ -37,21 +36,20 @@ export default function Server() {
); );
useEffect(() => { useEffect(() => {
app.setServer(server);
const channelId = searchParams.get("ch"); const channelId = searchParams.get("ch");
if (channelId) { if (channelId) {
app.setCurrentChannel( app.setCurrentChannel(
server?.channels.find((v) => v.id === channelId) || app.server?.channels.find((v) => v.id === channelId) ||
server?.channels[0] || app.server?.channels[0] ||
null null
); );
} else { } else {
app.setCurrentChannel(server?.channels[0] || null); app.setCurrentChannel(app.server?.channels[0] || null);
} }
}, [server]); }, [app.server]);
return ( return (
<AppLayout app={app} server={server}> <AppLayout app={app}>
<ChannelView <ChannelView
app={app} app={app}
messages={messages} messages={messages}
+2 -4
View File
@@ -18,13 +18,11 @@ export default function AppLayout({
children, children,
chatWith, chatWith,
onNewMessage, onNewMessage,
server,
app, app,
}: { }: {
onNewMessage?: (msg: Message) => void; onNewMessage?: (msg: Message) => void;
chatWith?: string; chatWith?: string;
children?: React.ReactNode; children?: React.ReactNode;
server?: Server;
app: App; app: App;
}) { }) {
const router = useRouter(); const router = useRouter();
@@ -77,8 +75,8 @@ export default function AppLayout({
<div className="flex-1 min-w-0 flex flex-col bg-sidebar"> <div className="flex-1 min-w-0 flex flex-col bg-sidebar">
<div className="flex-1 min-h-0"> <div className="flex-1 min-h-0">
{server ? ( {app.server ? (
<SidebarChannels server={server} app={app} /> <SidebarChannels app={app} />
) : ( ) : (
<SidebarDMs app={app} /> <SidebarDMs app={app} />
)} )}
+3 -9
View File
@@ -36,21 +36,15 @@ export function ChannelItem({ channel, app }: { channel: Channel; app: App }) {
); );
} }
export default function SidebarChannels({ export default function SidebarChannels({ app }: { app: App }) {
server,
app,
}: {
server: Server;
app: App;
}) {
return ( return (
<div className="w-full flex flex-col bg-sidebar"> <div className="w-full flex flex-col bg-sidebar">
<div className="p-3 border-b flex items-center gap-2"> <div className="p-3 border-b flex items-center gap-2">
<h2>{server.name}</h2> <h2>{app.server?.name}</h2>
</div> </div>
<ScrollArea className="flex-1"> <ScrollArea className="flex-1">
<div className="p-2 flex flex-col gap-2"> <div className="p-2 flex flex-col gap-2">
{server.channels.map((channel: Channel) => ( {app.server?.channels.map((channel: Channel) => (
<ChannelItem key={channel.id} channel={channel} app={app} /> <ChannelItem key={channel.id} channel={channel} app={app} />
))} ))}
</div> </div>