"use client"; import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from "@/components/ui/command"; import { TagShower } from "./ServerList"; import { useEffect, useState } from "react"; import { OnlineServer } from "@/lib/types/server"; import events from "@/lib/commandEvent"; import { useHotkeys } from "react-hotkeys-hook"; import Link from "next/link"; import { ArrowDown01, ArrowLeft, CommandIcon, LinkIcon, Server, Settings, Star, } from "lucide-react"; import { useEffectOnce } from "@/lib/useEffectOnce"; import { useClerk, useUser } from "@clerk/nextjs"; import { useRouter } from '@/lib/useRouter' export function SearchCommandBar() { const [serverList, setServerList] = useState([]); const [open, setOpen] = useState(false); const [backEnabled, setBackEnabled] = useState(false); const [searchRes, setSearchRes] = useState(undefined); const router = useRouter() useHotkeys("mod+shift+k", () => setOpen(true), []); useEffectOnce(() => { events.on("search-request-event", () => { setOpen(true); }); events.on("search-request-event-back", () => { setOpen(true); setBackEnabled(true); }); fetch("https://api.minehut.com/servers").then((c) => c.json().then((b: { servers: OnlineServer[] }) => { setServerList(b.servers.slice(0, 20)); }) ); }); return ( { fetch("https://api.minehut.com/server/" + c + "?byName=true").then( (l) => { if (l.ok) { console.log("found!"); l.json().then((m: any) => { setSearchRes(m.server); console.log(searchRes); }); } else { setSearchRes(undefined); } } ); }} /> { setOpen(false); if (backEnabled) events.emit("cmd-event"); setBackEnabled(false); }} > Go back No results found. (Minehut deleted legacy servers) {searchRes == undefined ? ( "" ) : ( { router.push("/server/" + searchRes.name); }} >
{searchRes.name}
{searchRes.joins} total joins •{" "} {searchRes.online ? "Online" : "Offline"}
)} {serverList.map((b: OnlineServer) => ( { router.push("/server/" + b.name); }} >
{b.name}
))}
); } export function CommandBar() { const [open, setOpen] = useState(false); const clerk = useClerk(); const { user } = useUser(); useHotkeys("mod+k", () => setOpen(true), []); useEffectOnce(() => { events.on("cmd-event", () => { setOpen(true); }); }); return ( No results found. { setOpen(false); events.emit("search-request-event-back"); }} > Servers +Shift+K Sort Servers - coming soon { setOpen(false); events.emit("cmd-event-link"); }} > Links events.emit("cmd-event-favorites")}> Favorites { setOpen(false); try { clerk.openUserProfile(); } catch { clerk.openSignIn(); } }} > User Settings ); } export function SubLinkCommandBar() { const [open, setOpen] = useState(false); useEffectOnce(() => { events.on("cmd-event-link", () => { setOpen(true); }); }); return ( No results found. { setOpen(false); events.emit("cmd-event"); }} > Go back { window .open("https://github.com/DeveloLongScript/MHSF", "_blank") ?.focus(); }} > GitHub { window.open("https://mhsf.betteruptime.com", "_blank")?.focus(); }} > Status Page ); } import * as React from "react"; import type { SVGProps } from "react"; import { getAccountFavorites } from "@/lib/api"; const Github = (props: SVGProps) => ( ); export function FavoriteBar() { const [isOpen, setOpen] = useState(false); const [favorites, setFavorites] = useState | undefined>( undefined ); const clerk = useClerk(); const router = useRouter() useEffectOnce(() => { events.on("cmd-event-favorites", () => setOpen(true)); getAccountFavorites().then((c) => setFavorites(c)); }); return ( No results found. { setOpen(false); events.emit("cmd-event"); }} > Go back {favorites == undefined && ( clerk.openSignIn()}> Login to see favorites )} {favorites != undefined && ( <> {favorites.map((c) => ( { router.push("/server/" + c); }} > {c} ))} )} ); } export function CommandBarer() { return ( <> ); }