Start new DM

This commit is contained in:
2025-10-22 12:02:59 +02:00
parent 2c55109cb5
commit 0747cd9440
2 changed files with 58 additions and 4 deletions
+56
View File
@@ -0,0 +1,56 @@
"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuTrigger,
DropdownMenuItem,
} from "@/components/ui/dropdown-menu";
import { Input } from "@/components/ui/input";
import { PlusCircle } from "lucide-react";
import { UserProfile } from "@/hooks/get-user";
import { useRouter } from "next/navigation";
import axios from "axios";
export default function StartNewDM() {
const [username, setUsername] = useState("");
const router = useRouter();
const handleStartDM = async () => {
const res = await axios.get("/api/profile", {
params: { username },
});
const user = res.data as UserProfile;
router.push(`/chat/${user.id}`);
setUsername("");
};
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className="gap-2">
<PlusCircle className="w-4 h-4" />
Start New DM
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent className="w-56 p-3 space-y-2">
<Input
type="text"
placeholder="Enter username"
value={username}
onChange={(e) => setUsername(e.target.value)}
autoComplete="off"
spellCheck={false}
autoCorrect="off"
autoCapitalize="none"
/>
<Button onClick={handleStartDM} className="w-full">
Start
</Button>
</DropdownMenuContent>
</DropdownMenu>
);
}
+2 -4
View File
@@ -19,6 +19,7 @@ import {
ChevronRight,
} from "lucide-react";
import Link from "next/link";
import StartNewDM from "./StartNewDM";
export default function ChatHub() {
const app = useApp();
@@ -122,10 +123,7 @@ export default function ChatHub() {
<div>
<h2 className="text-xl font-semibold mb-4">Quick Actions</h2>
<div className="flex flex-wrap gap-3">
<Button variant="outline" className="gap-2">
<PlusCircle className="w-4 h-4" />
Start New DM
</Button>
<StartNewDM />
<Button variant="outline" className="gap-2">
<Users className="w-4 h-4" />
Create Server