"use client"; import { Sidebar, SidebarContent, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, } from "./ui/sidebar"; import { ChevronDown, HashIcon, MicIcon } from "lucide-react"; import { DropdownMenuItem, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "./ui/dropdown-menu"; import Server from "@/types/server"; import { useEffect, useState } from "react"; import Cookies from "js-cookie"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "./ui/dialog"; import { Input } from "./ui/input"; import { Label } from "./ui/label"; import { Button } from "./ui/button"; import Link from "next/link"; export default function AppSidebar({ server, children, }: Readonly<{ server?: Server; children: React.ReactNode; }>) { const [servers, setServers] = useState<[string, string][]>([]); const [newServer, setNewServer] = useState({ name: "", ip: "" }); useEffect(() => { const s = Cookies.get("servers")?.split(","); if (s) setServers(s.map((x) => x.trim().split("@") as [string, string])); }, []); const handleAddServer = () => { if (!newServer.ip) return; const updatedServers = [ ...servers, [newServer.ip, newServer.name] as [string, string], ]; setServers(updatedServers); Cookies.set("servers", updatedServers.map((x) => x.join("@")).join(","), { expires: 7, }); setNewServer({ name: "", ip: "" }); }; return server ? ( Add server Add a new server to your server list.
setNewServer((prev) => ({ ...prev, name: e.target.value })) } placeholder="Voxa Server" />
setNewServer((prev) => ({ ...prev, ip: e.target.value })) } placeholder="192.168.1.5" />
{server.name} {servers.map((s, i) => ( {s[1] || s[0]} ))} Add Server {server.channels.map((channel) => ( {channel.kind === "voice" ? : } {channel.name} ))} {children}
) : ( children ); }