diff --git a/src/browser/components/home.tsx b/src/browser/components/home.tsx index 190cf88..ccc6128 100644 --- a/src/browser/components/home.tsx +++ b/src/browser/components/home.tsx @@ -409,6 +409,11 @@ export function Home() { return () => clearTimeout(timeout); }, [github, searchQuery]); + // Multi-select state for adding repos + const [selectedReposToAdd, setSelectedReposToAdd] = useState>( + new Set() + ); + const handleAddRepo = useCallback((fullName: string) => { setConfig((prev) => { if (prev.repos.some((r) => r.name === fullName)) return prev; @@ -421,6 +426,36 @@ export function Home() { setSearchResults([]); }, []); + const handleAddSelectedRepos = useCallback(() => { + if (selectedReposToAdd.size === 0) return; + setConfig((prev) => { + const newRepos = Array.from(selectedReposToAdd) + .filter((name) => !prev.repos.some((r) => r.name === name)) + .map((name) => ({ name, mode: "review-requested" as FilterMode })); + if (newRepos.length === 0) return prev; + return { + ...prev, + repos: [...prev.repos, ...newRepos], + }; + }); + setSelectedReposToAdd(new Set()); + setSearchQuery(""); + setSearchResults([]); + setShowAddRepo(false); + }, [selectedReposToAdd]); + + const toggleRepoSelection = useCallback((fullName: string) => { + setSelectedReposToAdd((prev) => { + const next = new Set(prev); + if (next.has(fullName)) { + next.delete(fullName); + } else { + next.add(fullName); + } + return next; + }); + }, []); + const handleRemoveRepo = useCallback((repoName: string) => { setConfig((prev) => ({ ...prev, @@ -814,6 +849,7 @@ export function Home() { onClick={() => { setShowAddRepo(false); setSearchQuery(""); + setSelectedReposToAdd(new Set()); }} />
)} {searchResults.length > 0 ? ( - searchResults.map((repo) => ( - - )) + searchResults.map((repo) => { + const isSelected = selectedReposToAdd.has( + repo.full_name + ); + const isAlreadyAdded = config.repos.some( + (r) => r.name === repo.full_name + ); + return ( + + ); + }) ) : searchQuery ? (
{searching ? "Searching..." : "No repositories found"} @@ -900,6 +966,23 @@ export function Home() {
)}
+ + {/* Add Selected Button */} + {selectedReposToAdd.size > 0 && ( +
+ +
+ )} )}