diff --git a/src/components/PackageBrowserV2.tsx b/src/components/PackageBrowserV2.tsx index d9f1a23..4b51ed7 100644 --- a/src/components/PackageBrowserV2.tsx +++ b/src/components/PackageBrowserV2.tsx @@ -31,7 +31,10 @@ export function PackageBrowserV2({ const [totalCount, setTotalCount] = useState(0) const [searchQuery, setSearchQuery] = useState('') const [typeFilter, setTypeFilter] = useState('') - const [repositoryFilter, setRepositoryFilter] = useState('') + const isDebianUbuntu = useMemo(() => { + const id = selectedPlatform?.id || '' + return id === 'debian' || id === 'ubuntu' + }, [selectedPlatform]) const [scrollPosition, setScrollPosition] = useState(0) const searchInputRef = useRef(null) @@ -60,14 +63,10 @@ export function PackageBrowserV2({ params.search = searchQuery.trim() } - if (typeFilter && typeFilter !== 'all') { + if (isDebianUbuntu && typeFilter && typeFilter !== 'all') { params.type = typeFilter as 'gui' | 'cli' } - if (repositoryFilter && repositoryFilter !== 'all') { - params.repository = repositoryFilter as 'official' | 'third-party' - } - console.log('🔍 Frontend: API params:', params) const result = await apiClient.getPackages(params) console.log('📦 Frontend: Received initial packages:', { @@ -87,7 +86,7 @@ export function PackageBrowserV2({ } loadPackages() - }, [selectedPlatform, typeFilter, repositoryFilter]) + }, [selectedPlatform, typeFilter, isDebianUbuntu]) // Debounced search to prevent focus loss useEffect(() => { @@ -109,14 +108,10 @@ export function PackageBrowserV2({ params.search = searchQuery.trim() } - if (typeFilter && typeFilter !== 'all') { + if (isDebianUbuntu && typeFilter && typeFilter !== 'all') { params.type = typeFilter as 'gui' | 'cli' } - if (repositoryFilter && repositoryFilter !== 'all') { - params.repository = repositoryFilter as 'official' | 'third-party' - } - console.log('🔍 Frontend: Debounced API params:', params) const result = await apiClient.getPackages(params) console.log('📦 Frontend: Debounced result:', result.packages.length) @@ -135,7 +130,7 @@ export function PackageBrowserV2({ }, 300) // 300ms debounce return () => clearTimeout(timeoutId) - }, [searchQuery]) + }, [searchQuery, isDebianUbuntu, typeFilter, selectedPlatform]) // Load more packages const loadMore = async () => { @@ -153,14 +148,10 @@ export function PackageBrowserV2({ params.search = searchQuery.trim() } - if (typeFilter && typeFilter !== 'all') { + if (isDebianUbuntu && typeFilter && typeFilter !== 'all') { params.type = typeFilter as 'gui' | 'cli' } - if (repositoryFilter && repositoryFilter !== 'all') { - params.repository = repositoryFilter as 'official' | 'third-party' - } - const result = await apiClient.getPackages(params) setPackages(prev => [...prev, ...result.packages]) setHasMore(packages.length + result.packages.length < result.total) @@ -253,7 +244,8 @@ export function PackageBrowserV2({ /> - {/* Type Filter */} + {/* Type Filter (Debian/Ubuntu only) */} + {isDebianUbuntu && ( - - {/* Repository Filter */} - + )} {/* Package List */} @@ -312,7 +293,7 @@ export function PackageBrowserV2({ />
- {getPackageIcon(pkg.type || 'cli')} + {isDebianUbuntu ? getPackageIcon(pkg.type || 'cli') : }
@@ -325,12 +306,16 @@ export function PackageBrowserV2({ {pkg.description || 'No description available'}

- - {pkg.type?.toUpperCase() || 'CLI'} - - - {pkg.repository || 'official'} - + {isDebianUbuntu && pkg.type && ( + + {pkg.type.toUpperCase()} + + )} + {pkg.repository === 'third-party' && ( + + third-party + + )}
diff --git a/src/services/archPackageFetcher.ts b/src/services/archPackageFetcher.ts index 1110731..9cf8b0b 100644 --- a/src/services/archPackageFetcher.ts +++ b/src/services/archPackageFetcher.ts @@ -172,16 +172,12 @@ export class ArchPackageFetcher { [pkg.name, 'arch'] ) - const repository = (pkg.repository === 'core' || pkg.repository === 'extra') - ? 'official' - : 'third-party' - if (existingResult.rows.length === 0) { // Insert new package (id will be auto-generated by SERIAL) await query( `INSERT INTO packages (id, name, description, version, platform_id, type, repository, popularity_score, is_active) VALUES (gen_random_uuid(), $1, $2, $3, $4, $5, $6, $7, $8)`, - [pkg.name, pkg.description, pkg.version, 'arch', 'cli', repository, 0, true] + [pkg.name, pkg.description, pkg.version, 'arch', null, null, 0, true] ) stored++ } else if (existingResult.rows[0].version !== pkg.version) { @@ -190,7 +186,7 @@ export class ArchPackageFetcher { `UPDATE packages SET version = $1, description = $2, repository = $3, updated_at = NOW() WHERE id = $4`, - [pkg.version, pkg.description, repository, existingResult.rows[0].id] + [pkg.version, pkg.description, null, existingResult.rows[0].id] ) updated++ } else { diff --git a/src/services/fedoraPackageFetcher.ts b/src/services/fedoraPackageFetcher.ts index 8eb76f5..6ed5231 100644 --- a/src/services/fedoraPackageFetcher.ts +++ b/src/services/fedoraPackageFetcher.ts @@ -146,7 +146,7 @@ export class FedoraPackageFetcher { await query( `INSERT INTO packages (id, name, description, version, platform_id, type, repository, popularity_score, is_active) VALUES (gen_random_uuid(), $1, $2, $3, $4, $5, $6, $7, $8)`, - [pkg.name, pkg.description, pkg.version, 'fedora', 'cli', pkg.repository, 0, true] + [pkg.name, pkg.description, pkg.version, 'fedora', null, null, 0, true] ) stored++ } else if (existingResult.rows[0].version !== pkg.version) { @@ -155,7 +155,7 @@ export class FedoraPackageFetcher { `UPDATE packages SET version = $1, description = $2, repository = $3, updated_at = NOW() WHERE id = $4`, - [pkg.version, pkg.description, pkg.repository, existingResult.rows[0].id] + [pkg.version, pkg.description, null, existingResult.rows[0].id] ) updated++ } else { diff --git a/src/services/homebrewPackageFetcher.ts b/src/services/homebrewPackageFetcher.ts index f14260e..158c762 100644 --- a/src/services/homebrewPackageFetcher.ts +++ b/src/services/homebrewPackageFetcher.ts @@ -145,7 +145,7 @@ export class HomebrewPackageFetcher { await query( `INSERT INTO packages (id, name, description, version, platform_id, type, repository, popularity_score, is_active) VALUES (gen_random_uuid(), $1, $2, $3, $4, $5, $6, $7, $8)`, - [pkg.name, pkg.description, pkg.version, 'macos', 'cli', 'official', 0, true] + [pkg.name, pkg.description, pkg.version, 'macos', null, null, 0, true] ) stored++ } else if (existingResult.rows[0].version !== pkg.version) { diff --git a/src/services/wingetPackageFetcher.ts b/src/services/wingetPackageFetcher.ts index 3b94504..222d89f 100644 --- a/src/services/wingetPackageFetcher.ts +++ b/src/services/wingetPackageFetcher.ts @@ -232,7 +232,7 @@ export class WingetPackageFetcher { await query( `INSERT INTO packages (id, name, description, version, platform_id, type, repository, popularity_score, is_active) VALUES (gen_random_uuid(), $1, $2, $3, $4, $5, $6, $7, $8)`, - [pkg.name, pkg.description, pkg.version, 'windows', 'gui', 'official', 0, true] + [pkg.name, pkg.description, pkg.version, 'windows', null, null, 0, true] ) stored++ } else if (existingResult.rows[0].version !== pkg.version) {