diff --git a/app/download/SearchForm.tsx b/app/download/SearchForm.tsx new file mode 100644 index 0000000..dc2cd88 --- /dev/null +++ b/app/download/SearchForm.tsx @@ -0,0 +1,114 @@ +// app/download/SearchForm.tsx +'use client'; + +import { useState } from 'react'; +import useSWR from 'swr'; + +const fetcher = (url: string) => fetch(url).then((res) => res.json()); + +interface SearchFormProps { + onSearch: (project: string, version: string, commitId: string) => void; +} + +export default function SearchForm({ onSearch }: SearchFormProps) { + const [selectedProject, setSelectedProject] = useState(''); + const [selectedVersion, setSelectedVersion] = useState(''); + const [commitId, setCommitId] = useState(''); + + // 获取项目列表 + const { data: projects, isLoading: loadingProjects } = useSWR( + '/api/projects', + fetcher + ); + + // 获取版本列表 + const { data: versions, isLoading: loadingVersions } = useSWR( + selectedProject ? `/api/versions?project=${selectedProject}` : null, + fetcher + ); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (selectedProject && selectedVersion) { + onSearch(selectedProject, selectedVersion, commitId); + } + }; + + return ( +
+ ); +}