Skip to content

Commit

Permalink
perf: upgrade react query and use local storage persistor (#750)
Browse files Browse the repository at this point in the history
  • Loading branch information
NoamGaash committed May 15, 2024
1 parent 8cda1a6 commit 5661d66
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 108 deletions.
162 changes: 70 additions & 92 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
"@mui/material": "^5.15.14",
"@mui/x-date-pickers": "^7.1.0",
"@mui/x-tree-view": "^6.17.0",
"@tanstack/query-sync-storage-persister": "^5.36.0",
"@tanstack/react-query": "^5.36.0",
"@tanstack/react-query-persist-client": "^5.36.0",
"@types/git-username": "^1.0.5",
"@types/leaflet.markercluster": "^1.5.2",
"@vitejs/plugin-react-swc": "^3.6.0",
Expand All @@ -37,7 +40,6 @@
"react-i18next": "^14.1.0",
"react-leaflet": "^4.0.1",
"react-leaflet-cluster": "^2.1.0",
"react-query": "^3.39.3",
"react-router-dom": "^6.22.3",
"recharts": "^2.12.6",
"sass": "^1.72.0",
Expand Down
22 changes: 11 additions & 11 deletions src/api/groupByService.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BASE_PATH } from './apiConfig'
import agencyList from 'open-bus-stride-client/agencies/agencyList'
import { Moment } from 'moment'
import { useQuery } from 'react-query'
import { useQuery } from '@tanstack/react-query'

type groupByField =
| 'gtfs_route_date'
Expand Down Expand Up @@ -64,17 +64,15 @@ export type GroupByRes = Replace<
>

async function fetchGroupBy({
dateTo,
dateFrom,
dateToStr,
dateFromStr,
groupBy,
}: {
dateTo: Moment
dateFrom: Moment
dateToStr: string
dateFromStr: string
groupBy: groupByFields
}): Promise<GroupByRes[]> {
// example: https://open-bus-stride-api.hasadna.org.il/gtfs_rides_agg/group_by?date_from=2023-01-27&date_to=2023-01-29&group_by=operator_ref
const dateToStr = dateTo.toISOString().split('T')[0]
const dateFromStr = dateFrom.toISOString().split('T')[0]
const excludes = 'exclude_hour_from=23&exclude_hour_to=2'

const response = await fetch(
Expand Down Expand Up @@ -102,10 +100,12 @@ export function useGroupBy({
dateFrom: Moment
groupBy: groupByFields
}) {
const { isLoading, isError, data, error } = useQuery(
['groupBy', dateFrom.toISOString(), dateTo.toISOString(), groupBy],
() => fetchGroupBy({ dateTo, dateFrom, groupBy }),
)
const dateToStr = dateTo.toISOString().split('T')[0]
const dateFromStr = dateFrom.toISOString().split('T')[0]
const { isLoading, isError, data, error } = useQuery({
queryKey: ['groupBy', dateToStr, dateFromStr, groupBy],
queryFn: () => fetchGroupBy({ dateToStr, dateFromStr, groupBy }),
})

return [data ? data : [], isLoading, isError ? error : null] as const
}
25 changes: 21 additions & 4 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,33 @@ import './index.css'
import App from './App'
import ReactGA from 'react-ga4'
import './locale/allTranslations'
import { QueryClient, QueryClientProvider } from 'react-query'
import { QueryClient } from '@tanstack/react-query'
import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'

const persister = createSyncStoragePersister({
storage: window.localStorage,
})

const queryClient = new QueryClient({
defaultOptions: {
queries: {
gcTime: Infinity,
staleTime: 1000 * 60 * 60 * 24, // 24 hours
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
},
},
})

ReactGA.initialize('G-0YRQT80GG1')

const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
const client = new QueryClient()
root.render(
<React.StrictMode>
<QueryClientProvider client={client}>
<PersistQueryClientProvider client={queryClient} persistOptions={{ persister }}>
<App />
</QueryClientProvider>
</PersistQueryClientProvider>
</React.StrictMode>,
)

0 comments on commit 5661d66

Please sign in to comment.