Sync showFilter with URL

Make 5 stars filter actually "higher than 4.5"
This commit is contained in:
grimsi
2025-09-04 17:41:58 +02:00
parent ab0f28e94f
commit 8900e16e60
+11 -1
View File
@@ -51,6 +51,7 @@ export default function SearchView() {
const keywords = searchParams.getAll("keyword"); const keywords = searchParams.getAll("keyword");
const sort = searchParams.get("sort") || "title_asc"; const sort = searchParams.get("sort") || "title_asc";
const minRatingParam = parseInt(searchParams.get("minRating") || "1", 10); const minRatingParam = parseInt(searchParams.get("minRating") || "1", 10);
const filtersParam = searchParams.get("filters");
setSearchTerm(term); setSearchTerm(term);
setSelectedLibraries(new Set(libs)); setSelectedLibraries(new Set(libs));
@@ -62,6 +63,7 @@ export default function SearchView() {
setSelectedKeywords(new Set(keywords)); setSelectedKeywords(new Set(keywords));
setSortBy(sort); setSortBy(sort);
setMinRating(isNaN(minRatingParam) ? 1 : minRatingParam); setMinRating(isNaN(minRatingParam) ? 1 : minRatingParam);
setShowFilters(filtersParam === "1");
setInitialLoadComplete(true); setInitialLoadComplete(true);
}, []); }, []);
@@ -121,10 +123,14 @@ export default function SearchView() {
if (sortBy && sortBy !== "title_asc") { if (sortBy && sortBy !== "title_asc") {
newParams.set("sort", sortBy); newParams.set("sort", sortBy);
} }
// Add showFilters param
if (showFilters) {
newParams.set("filters", "1");
}
setSearchParams(newParams, {replace: true}); setSearchParams(newParams, {replace: true});
}, [searchTerm, selectedLibraries, selectedDevelopers, selectedGenres, }, [searchTerm, selectedLibraries, selectedDevelopers, selectedGenres,
selectedThemes, selectedFeatures, selectedPerspectives, selectedKeywords, sortBy, minRating]); selectedThemes, selectedFeatures, selectedPerspectives, selectedKeywords, sortBy, minRating, showFilters]);
// Sorting function (refactored to use sortKey and sortDirection) // Sorting function (refactored to use sortKey and sortDirection)
function sortGames(games: GameDto[]): GameDto[] { function sortGames(games: GameDto[]): GameDto[] {
@@ -232,6 +238,9 @@ export default function SearchView() {
const ratingStr = gameRatingInStars(game); const ratingStr = gameRatingInStars(game);
if (ratingStr === "N/A") return false; if (ratingStr === "N/A") return false;
const ratingNum = parseFloat(ratingStr); const ratingNum = parseFloat(ratingStr);
if (minRating === 5) {
return ratingNum > 4.5;
}
return ratingNum >= minRating; return ratingNum >= minRating;
}); });
} }
@@ -343,6 +352,7 @@ export default function SearchView() {
selectionMode="single" selectionMode="single"
label="Minimum Rating" label="Minimum Rating"
placeholder="Minimum rating" placeholder="Minimum rating"
disallowEmptySelection
selectedKeys={[minRating.toString()]} selectedKeys={[minRating.toString()]}
onSelectionChange={keys => setMinRating(parseInt(Array.from(keys)[0] as string, 10))} onSelectionChange={keys => setMinRating(parseInt(Array.from(keys)[0] as string, 10))}
renderValue={(items: SelectedItems<any>) => { renderValue={(items: SelectedItems<any>) => {