1- import { createContext , useContext , useMemo , useState } from 'react' ;
1+ import { createContext , useContext , useRef , useMemo , useState } from 'react' ;
22import useGetOpportunities from 'src/hooks/useGetOpportunities' ;
33import useGetProducts from '../hooks/useGetProducts' ;
44import { formatToISOString } from 'src/utils' ;
55
66const AppContext = createContext ( ) ;
77
8+ const today = new Date ( ) ;
9+ const defaultUserParams = {
10+ dateRange : [
11+ today ,
12+ new Date ( new Date ( today ) . setDate ( today . getDate ( ) + 3 ) ) ,
13+ ] ,
14+ provider : 'all' ,
15+ product : 'all'
16+ }
17+
818export default function AppProvider ( { children } ) {
9- const today = new Date ( ) ;
1019 /**
1120 * @typedef {object } UserParams
1221 * @property {[Date, Date] } dateRange
@@ -16,17 +25,11 @@ export default function AppProvider({ children }) {
1625 const [
1726 userParams ,
1827 setUserParams
19- ] = useState ( {
20- dateRange : [
21- today ,
22- new Date ( new Date ( today ) . setDate ( today . getDate ( ) + 3 ) ) ,
23- ] ,
24- provider : 'all' ,
25- product : 'all'
26- } ) ;
28+ ] = useState ( { ...defaultUserParams } ) ;
2729 const [ hoveredOpportunity , setHoveredOpportunity ] = useState ( null ) ;
2830 const [ selectedOpportunity , setSelectedOpportunity ] = useState ( null ) ;
2931 const [ openFilters , setOpenFilters ] = useState ( false ) ;
32+ const opportunitiesRef = useRef ( null ) ;
3033
3134 const postParams = useMemo ( ( ) => {
3235 return userParams . geometry ? {
@@ -40,7 +43,13 @@ export default function AppProvider({ children }) {
4043 } , [ userParams ] )
4144
4245 const { isLoading : isLoadingProducts , data : products , error : errorProducts } = useGetProducts ( ) ;
43- const { isLoading : isLoadingOpps , data : opportunities , error : errorOpps } = useGetOpportunities ( products , postParams ) ;
46+ const { isLoading : isLoadingOpps , data : opportunitiesData , error : errorOpps } = useGetOpportunities ( products , postParams ) ;
47+
48+ opportunitiesRef . current = ( postParams && opportunitiesData ) ? opportunitiesData : null ;
49+
50+ function resetSearch ( ) {
51+ setUserParams ( { ...defaultUserParams } ) ;
52+ }
4453
4554 const app = {
4655 userParams,
@@ -49,15 +58,16 @@ export default function AppProvider({ children }) {
4958 isLoadingProducts,
5059 products,
5160 errorProducts,
52- opportunities,
61+ opportunities : opportunitiesRef . current ,
5362 errorOpps,
5463 selectedOpportunity,
5564 setSelectedOpportunity,
5665 hoveredOpportunity,
5766 setHoveredOpportunity,
5867 openFilters,
5968 setOpenFilters,
60- setHoveredOpportunity
69+ setHoveredOpportunity,
70+ resetSearch
6171 }
6272
6373 return (
0 commit comments