Skip to content

Commit b4954b0

Browse files
committed
feat: search query param
1 parent 7d768d0 commit b4954b0

1 file changed

Lines changed: 13 additions & 1 deletion

File tree

apps/web/src/pages/SpecExplorer.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { clsx } from "clsx";
22
import { Loader2 } from "lucide-react";
33
import { useCallback, useEffect, useRef, useState } from "react";
4+
import { useSearchParams } from "react-router-dom";
45
import { Navbar } from "../components/Navbar";
56
import { PdfViewer } from "../components/PdfViewer";
67

@@ -35,14 +36,17 @@ interface SpecSearchResult {
3536
const DEFAULT_PDF_URL = "https://cdn.ooxml.dev/ecma-376/part1.pdf";
3637

3738
export function SpecExplorer() {
38-
const [search, setSearch] = useState("");
39+
const [searchParams] = useSearchParams();
40+
const initialQuery = searchParams.get("q") || "";
41+
const [search, setSearch] = useState(initialQuery);
3942
const [submittedSearch, setSubmittedSearch] = useState("");
4043
const [results, setResults] = useState<SpecSearchResult[]>([]);
4144
const [isLoading, setIsLoading] = useState(false);
4245
const [selectedIndex, setSelectedIndex] = useState(0);
4346
const [selectedResult, setSelectedResult] = useState<SpecSearchResult | null>(null);
4447
const resultsRef = useRef<HTMLDivElement>(null);
4548
const inputRef = useRef<HTMLTextAreaElement>(null);
49+
const hasAutoSearched = useRef(false);
4650

4751
// Preload the default PDF
4852
useEffect(() => {
@@ -94,6 +98,14 @@ export function SpecExplorer() {
9498
}
9599
}, [search, submittedSearch]);
96100

101+
// Auto-search if query param provided (e.g., ?q=w:shd)
102+
useEffect(() => {
103+
if (initialQuery && !hasAutoSearched.current) {
104+
hasAutoSearched.current = true;
105+
handleSubmit();
106+
}
107+
}, [initialQuery, handleSubmit]);
108+
97109
// Handle Enter key to submit
98110
const handleKeyDown = useCallback(
99111
(e: React.KeyboardEvent<HTMLTextAreaElement>) => {

0 commit comments

Comments
 (0)