fix: reset the filters when the "search all" is hit #97

Merged
azpect merged 1 commits from fix/filter-clear into master 2026-03-23 22:19:37 -07:00
3 changed files with 17 additions and 2 deletions
Showing only changes of commit 9c2c7f976f - Show all commits

View File

@ -4,6 +4,7 @@ import type { SearchFilters } from "../types/search";
interface FilterContextType { interface FilterContextType {
filters: SearchFilters; filters: SearchFilters;
setFilters: (filters: SearchFilters) => void; setFilters: (filters: SearchFilters) => void;
resetFilters: () => void;
} }
export const FilterContext = createContext<FilterContextType>({ export const FilterContext = createContext<FilterContextType>({
@ -16,4 +17,5 @@ export const FilterContext = createContext<FilterContextType>({
Favorites: false, Favorites: false,
}, },
setFilters: () => { return }, setFilters: () => { return },
resetFilters: () => { return },
}); });

View File

@ -36,7 +36,7 @@ export function FilterProvider({ children }: { children: ReactNode }) {
}, [filters]); }, [filters]);
return ( return (
<FilterContext value={{ filters, setFilters }}> <FilterContext value={{ filters, setFilters, resetFilters: () => setFilters(DEFAULT_FILTERS) }}>
{children} {children}
</FilterContext> </FilterContext>
) )

View File

@ -12,10 +12,13 @@ import { GetRecipeOfTheWeek } from "../services/RecipeService";
import { isApiError, type ApiError } from "../types/api/error"; import { isApiError, type ApiError } from "../types/api/error";
import { AuthContext } from "../context/AuthContext"; import { AuthContext } from "../context/AuthContext";
import { GetAuthenticatedUserMadeRecipes, GetAuthenticateUserViewedRecipes } from "../services/UserService"; import { GetAuthenticatedUserMadeRecipes, GetAuthenticateUserViewedRecipes } from "../services/UserService";
import { useNavigate } from "react-router-dom";
import { FilterContext } from "../context/FilterContext";
export default function Home() { export default function Home() {
// Context // Context
const { isLoggedIn } = use(AuthContext); const { isLoggedIn } = use(AuthContext);
const { resetFilters } = use(FilterContext);
// Page state // Page state
const [recipeOfTheWeek, setRecipeOfTheWeek] = useState<Recipe | null>(null); const [recipeOfTheWeek, setRecipeOfTheWeek] = useState<Recipe | null>(null);
@ -24,6 +27,7 @@ export default function Home() {
const [viewedRecipes, setViewedRecipes] = useState<Recipe[]>([]); const [viewedRecipes, setViewedRecipes] = useState<Recipe[]>([]);
const [error, setError] = useState<string>(""); const [error, setError] = useState<string>("");
const navigate = useNavigate();
// Fetch the recipe of the week // Fetch the recipe of the week
useEffect(() => { useEffect(() => {
@ -55,6 +59,12 @@ export default function Home() {
void fetch(); void fetch();
}, [isLoggedIn]); }, [isLoggedIn]);
const viewAllRecipesHandler = () => {
// Clear filters
resetFilters();
void navigate(ROUTE_CONSTANTS.Search);
}
// BUG: Prob remove // BUG: Prob remove
useEffect(() => { useEffect(() => {
if (error) if (error)
@ -90,8 +100,11 @@ export default function Home() {
</div> </div>
<p className="leading-relaxed text-gray-800"> <p className="leading-relaxed text-gray-800">
Not sure what you want? {" "} Not sure what you want? {" "}
<a href={ROUTE_CONSTANTS.Search} className="text-blue-500 underline hover:text-blue-700 duration-300"> <button onClick={viewAllRecipesHandler} className="text-blue-500 underline hover:text-blue-700 duration-300 cursor-pointer">
View all recipes here View all recipes here
</button>
<a href={ROUTE_CONSTANTS.Search} className="text-blue-500 underline hover:text-blue-700 duration-300">
</a> </a>
</p> </p>
</section> </section>