"use client" import { useMemo } from "react" import { useSearchParams } from "next/navigation" import { readWireGuardUrl, patchWireGuardUrl, type WireGuardTab, type WireGuardStatus } from "@/lib/wireguard-url-state" export function useWireGuardUrlState() { const raw = useSearchParams().toString() const state = useMemo(() => readWireGuardUrl(new URLSearchParams(raw)), [raw]) function write(changes: Record, replace = false) { const href = patchWireGuardUrl(new URLSearchParams(window.location.search), changes) + window.location.hash if (href === window.location.pathname + window.location.search + window.location.hash) return if (replace) window.history.replaceState(null, "", href) else window.history.pushState(null, "", href) } return { ...state, setTab: (tab: WireGuardTab) => write({tab:tab === "interfaces" ? null : tab}), setSearch: (q: string) => write({q}, true), setStatus: (status: WireGuardStatus) => write({status:status === "all" ? null : status}), resetFilters: () => write({q:null,status:null,tab:null}), } }