diff --git a/src/app/scripts/_components/ScriptBrowser.tsx b/src/app/scripts/_components/ScriptBrowser.tsx index 18eafcf..42eeb98 100644 --- a/src/app/scripts/_components/ScriptBrowser.tsx +++ b/src/app/scripts/_components/ScriptBrowser.tsx @@ -5,7 +5,6 @@ import { AccordionTrigger, AccordionContent, } from "@/components/ui/accordion"; -import { Input } from "@/components/ui/input"; import Link from "next/link"; import Image from "next/image"; import { X, EyeOff, Eye, Star } from "lucide-react"; @@ -13,13 +12,12 @@ import React, { useState, useEffect, useRef, - useMemo, useCallback, } from "react"; import { Category } from "@/lib/types"; import { Badge } from "../../../components/ui/badge"; -import { Button } from "../../../components/ui/button"; import clsx from "clsx"; +import { useRouter, useSearchParams } from "next/navigation"; const ScriptBrowser = ({ items, @@ -31,18 +29,9 @@ const ScriptBrowser = ({ setSelectedScript: (script: string | null) => void; }) => { const [links, setLinks] = useState([]); - const [searchTerm, setSearchTerm] = useState(""); - const inputRef = useRef(null); const [expandedItems, setExpandedItems] = useState([]); - const [showLogos, setShowLogos] = useState(() => { - const saved = localStorage.getItem("showLogos"); - return saved ? JSON.parse(saved) : true; - }); const linkRefs = useRef<{ [key: string]: HTMLAnchorElement | null }>({}); - - useEffect(() => { - localStorage.setItem("showLogos", JSON.stringify(showLogos)); - }, [showLogos]); + const searchParams = useSearchParams(); useEffect(() => { if (items) { @@ -51,62 +40,13 @@ const ScriptBrowser = ({ }, [items]); useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if (event.key === "/") { - inputRef.current?.focus(); - event.preventDefault(); - } - if (event.key === "Escape") { - handleSearch(""); - } - }; - - document.addEventListener("keydown", handleKeyDown); - return () => { - document.removeEventListener("keydown", handleKeyDown); - }; - }, []); - - const handleSearch = (value: string) => { - setSearchTerm(value); - }; - - const filteredLinks = useMemo(() => { - return links.filter((category) => - category.expand.items.some((script) => - script.title.toLowerCase().includes(searchTerm.toLowerCase()), - ), - ); - }, [links, searchTerm]); - - useEffect(() => { - if (searchTerm) { - const expanded = filteredLinks.map((category) => category.catagoryName); - setExpandedItems(expanded); - } else { - setExpandedItems([]); - } - }, [searchTerm, filteredLinks]); - - useEffect(() => { - const matchingScripts = links - .flatMap((category) => category.expand.items) - .filter((script) => - script.title.toLowerCase().includes(searchTerm.toLowerCase()), - ); - - if (matchingScripts.length === 1) { - const scriptTitle = matchingScripts[0].title; - setSelectedScript(scriptTitle); - - const linkElement = linkRefs.current[scriptTitle]; - if (linkElement) { - linkElement.click(); - } + const id = searchParams.get("id"); + if (id) { + setSelectedScript(id); } else { setSelectedScript(null); } - }, [searchTerm, links, setSelectedScript]); + }, [searchParams]); const handleSelected = useCallback( (title: string) => { @@ -133,25 +73,10 @@ const ScriptBrowser = ({ setExpandedItems(value); }; - const accordionProps = useMemo(() => { - return searchTerm - ? { - type: "multiple" as const, - value: expandedItems, - onValueChange: handleAccordionChange, - } - : { - type: "single" as const, - collapsible: true, - value: expandedItems[0], - onValueChange: (value: string) => handleAccordionChange([value]), - }; - }, [searchTerm, expandedItems]); - return (
-
-

Categories

+
+

Categories

{links.reduce( (acc, category) => acc + category.expand.items.length, @@ -160,38 +85,13 @@ const ScriptBrowser = ({ Total scripts

-
- {/*
-
- handleSearch(e.target.value)} - ref={inputRef} - value={searchTerm} - /> -
- - / - -
-
- {searchTerm && ( - handleSearch("")} - style={{ - position: "absolute", - right: "0.5rem", - }} - /> - )} -
*/} -
- - {filteredLinks.map((category) => ( + + {links.map((category) => ( - {category.expand.items - .filter((script) => - script.title - .toLowerCase() - .includes(searchTerm.toLowerCase()), - ) - .map((script, index) => ( -

- handleSelected(script.title)} - ref={(el) => { - linkRefs.current[script.title] = el; - }} - > - {showLogos && script.logo && ( - {script.title} + {category.expand.items.map((script, index) => ( +

+ handleSelected(script.title)} + ref={(el) => { + linkRefs.current[script.title] = el; + }} + > + {script.title} + + {script.title} + {script.isMostViewed && ( + )} - - {script.title} - {script.isMostViewed && ( - - )} - - - {script.item_type} - - -

- ))} + + + {script.item_type} + + +

+ ))}
))}
-

- -

); };