fix: reset the filters when the "search all" is hit #97
@ -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 },
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user