a tool for shared writing and social publishing
at main 27 lines 720 B view raw
1"use client"; 2 3import { usePathname } from "next/navigation"; 4import { useEffect, useRef } from "react"; 5 6export function NavStateTracker() { 7 const pathname = usePathname(); 8 const lastState = useRef<string | null>(null); 9 10 useEffect(() => { 11 let state: string | null = null; 12 if (pathname === "/home") state = "home"; 13 else if (pathname === "/reader" || pathname.startsWith("/reader/")) 14 state = "reader"; 15 16 if (state && state !== lastState.current) { 17 lastState.current = state; 18 fetch("/api/update-nav-state", { 19 method: "POST", 20 headers: { "Content-Type": "application/json" }, 21 body: JSON.stringify({ state }), 22 }); 23 } 24 }, [pathname]); 25 26 return null; 27}