"use client"
import { Search } from "lucide-react";
import React, { useEffect, useState } from "react";
import {
CommandDialog,
CommandInput,
CommandItem,
CommandEmpty,
CommandGroup,
CommandList
} from "@/components/ui/command";
import { useParams, useRouter } from "next/navigation";
interface ServerSearchProps {
data: {
label: string;
type: "channel" | "member";
data: {
icon: React.ReactNode;
name: string;
id: string;
}[] | undefined
}[];
}
export const ServerSearch = ({
data
}: ServerSearchProps) => {
const [open, setOpen] = useState(false);
const router = useRouter();
const params = useParams();
useEffect(() =>
{
const down = (e: KeyboardEvent) =>
{
if (e.key === "k" && (e.metaKey || e.ctrlKey))
{
e.preventDefault();
setOpen((open) => !open);
}
}
document.addEventListener("keydown", down);
return () => document.removeEventListener("keydown", down);
}, []);
const onClick = ({ id, type }: { id: string, type: "channel" | "member"}) =>
{
setOpen(false);
if (type === "member") {
return router.push(`/servers/${params?.serverId}/conversations/${id}`);
}
if (type === "channel") {
return router.push(`/servers/${params?.serverId}/channels/${id}`);
}
}
return (
<>
No Results Found
{data.map(({ label, type, data }) => {
if (!data?.length) return null;
return (
{data?.map(({ id, icon, name }) => {
return (
onClick({ id, type})}
key={id}>
{icon}
{name}
)
})}
)
})}
>
)
}