"use client"; import MessageBox from "@/components/channel/MessageBox"; import AppLayout from "@/components/app/AppLayout"; import { useParams, useRouter } from "next/navigation"; import useApp from "@/hooks/use-app"; import { useEffect, useRef, useState } from "react"; import auth, { waitForOpen } from "@/lib/auth"; import useAsync from "@/hooks/use-async"; import { Button } from "@/components/ui/button"; import useIndicators from "@/hooks/use-indicators"; import { useEffectOnceWhenReady } from "@/hooks/use-once"; import { ClientMessage } from "@/types/protocol"; export default function DMs() { const { id } = useParams<{ id: string }>(); const app = useApp(); const targetNode = useRef(null); const { value: target, loading } = useAsync(() => app.getUserById(id)); const router = useRouter(); const { indicators, addIndicator } = useIndicators(); const sendRequest = async (req: ClientMessage) => { console.log("Sending request: ", req); await waitForOpen(targetNode.current); await waitForOpen(app.node.current); switch (req.type) { case "send_message": targetNode.current?.send(JSON.stringify(req)); break; case "load_chunk": targetNode.current?.send(JSON.stringify(req)); app.node.current?.send(JSON.stringify(req)); break; default: app.node.current?.send(JSON.stringify(req)); break; } }; useEffectOnceWhenReady( () => { async function connectTargetNode() { if (!target) return; await auth({ id: target.node_address, wsRef: targetNode, messageStore: app.privateMessages, onIndicator: addIndicator, }); } connectTargetNode().then(() => { app.setCurrentChannel({ id: id, name: target?.display_name || id, kind: "text", }); }); }, [target], [(v) => v] ); return loading || target ? ( (m.channel_id === id && m.from === app.profile?.id) || (m.from === id && m.channel_id === app.profile?.id) )} sendRequest={sendRequest} indicators={indicators.filter( (indicator) => indicator.indicator.params.user_id !== app.profile?.id )} /> ) : (

404

User Not Found

Sorry, we couldn't find the user you're looking for.

); }