Skip to content

Commit 0d8dcf3

Browse files
Merge pull request #9 from MobilityData/feat/1601-remove-legacy-routing
feat: replace legacy router
2 parents 264e8c0 + f13a81c commit 0d8dcf3

File tree

20 files changed

+81
-88
lines changed

20 files changed

+81
-88
lines changed

src/app/AppContainer.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
import * as React from 'react';
44
import { Box, LinearProgress } from '@mui/material';
55
import type ContextProviderProps from './interface/ContextProviderProps';
6-
import { useLocation } from 'react-router-dom';
6+
import { usePathname } from 'next/navigation';
77
import { selectLoadingApp } from './store/selectors';
88
import { useSelector } from 'react-redux';
99

1010
const AppContainer: React.FC<ContextProviderProps> = ({ children }) => {
1111
const isAppLoading = useSelector(selectLoadingApp);
12-
const location = useLocation();
12+
const pathname = usePathname();
1313

1414
React.useLayoutEffect(() => {
1515
window.scrollTo({ top: 0, left: 0, behavior: 'instant' });
16-
}, [location.pathname]);
16+
}, [pathname]);
1717

1818
return (
1919
<>

src/app/screens/Analytics/GBFSFeedAnalytics/GBFSFeedAnalyticsTable.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
22
import { type MRT_Cell, type MRT_ColumnDef } from 'material-react-table';
33
import { format } from 'date-fns';
44
import { type GBFSFeedMetrics } from '../types';
5-
import { useNavigate } from 'react-router-dom';
5+
import { useRouter } from 'next/navigation';
66
import { Box } from '@mui/material';
77
import { OpenInNew } from '@mui/icons-material';
88

@@ -13,7 +13,7 @@ import { OpenInNew } from '@mui/icons-material';
1313
export const useTableColumns = (): Array<
1414
MRT_ColumnDef<GBFSFeedMetrics & { error_count: number }>
1515
> => {
16-
const navigate = useNavigate();
16+
const router = useRouter();
1717

1818
return useMemo<
1919
Array<MRT_ColumnDef<GBFSFeedMetrics & { error_count: number }>>
@@ -98,7 +98,7 @@ export const useTableColumns = (): Array<
9898
}}
9999
className={'navigable-list-item'}
100100
onClick={() => {
101-
navigate(`/metrics/gbfs/versions?version=${version}`);
101+
router.push(`/metrics/gbfs/versions?version=${version}`);
102102
}}
103103
>
104104
{version}
@@ -147,6 +147,6 @@ export const useTableColumns = (): Array<
147147
size: 200,
148148
},
149149
],
150-
[navigate],
150+
[router],
151151
);
152152
};

src/app/screens/Analytics/GBFSFeedAnalytics/index.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import {
2525
} from '@mui/material';
2626

2727
import '../analytics.css';
28-
import { useLocation } from 'react-router-dom';
28+
import { useSearchParams } from 'next/navigation';
2929
import {
3030
fetchAvailableFilesStart,
3131
selectFile,
@@ -46,16 +46,15 @@ export const getAnalyticsBucketEndpoint = (): string | undefined =>
4646
globalAnalyticsBucketEndpoint;
4747

4848
export default function GBFSFeedAnalytics(): React.ReactElement {
49-
const { search } = useLocation();
50-
const params = new URLSearchParams(search);
49+
const searchParams = useSearchParams();
5150
const { config } = useRemoteConfig();
5251
const [schemaPathFilters, setSchemaPathFilters] = React.useState<string[]>(
5352
[],
5453
);
5554

56-
const versionFilter = params.get('version');
55+
const versionFilter = searchParams.get('version');
5756
const schemaPathInitFilter = decodeURIComponent(
58-
params.get('schemaPath') ?? '',
57+
searchParams.get('schemaPath') ?? '',
5958
);
6059

6160
const dispatch = useDispatch();

src/app/screens/Analytics/GBFSNoticeAnalytics/index.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useEffect, useMemo } from 'react';
2-
import { useLocation, useNavigate } from 'react-router-dom';
2+
import { useSearchParams, useRouter } from 'next/navigation';
33

44
import {
55
MaterialReactTable,
@@ -27,10 +27,9 @@ import { type GBFSNoticeMetrics } from '../types';
2727
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
2828

2929
export default function GBFSNoticeAnalytics(): React.ReactElement {
30-
const navigateTo = useNavigate();
31-
const { search } = useLocation();
32-
const params = new URLSearchParams(search);
33-
const noticeCode = params.get('noticeCode');
30+
const router = useRouter();
31+
const searchParams = useSearchParams();
32+
const noticeCode = searchParams.get('noticeCode');
3433
const [data, setData] = useState<GBFSNoticeMetrics[]>([]);
3534
const [loading, setLoading] = useState(true);
3635
const [error, setError] = useState<string | null>(null);
@@ -191,7 +190,7 @@ export default function GBFSNoticeAnalytics(): React.ReactElement {
191190
sx={{ mb: 2 }}
192191
startIcon={<ListAltOutlined />}
193192
onClick={() => {
194-
navigateTo(
193+
router.push(
195194
`/metrics/gbfs/feeds?schemaPath=${encodeURIComponent(
196195
metrics.schema_path,
197196
)}`,

src/app/screens/Analytics/GBFSVersionAnalytics/index.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useEffect, useMemo } from 'react';
2-
import { useLocation, useNavigate } from 'react-router-dom';
2+
import { useSearchParams, useRouter } from 'next/navigation';
33

44
import {
55
MaterialReactTable,
@@ -36,13 +36,13 @@ import MUITooltip from '@mui/material/Tooltip';
3636
import { GBFS_LINK } from '../../../constants/Navigation';
3737

3838
export default function GBFSVersionAnalytics(): React.ReactElement {
39-
const navigateTo = useNavigate();
39+
const router = useRouter();
4040
const [data, setData] = useState<GBFSVersionMetrics[]>([]);
4141
const [loading, setLoading] = useState(true);
4242
const [error, setError] = useState<string | null>(null);
4343
const { config } = useRemoteConfig();
44-
const params = new URLSearchParams(useLocation().search);
45-
const versionFilter = params.get('version');
44+
const searchParams = useSearchParams();
45+
const versionFilter = searchParams.get('version');
4646
const initialFilter = useMemo(() => {
4747
if (versionFilter != null) {
4848
return [{ id: 'version', value: versionFilter }];
@@ -131,7 +131,7 @@ export default function GBFSVersionAnalytics(): React.ReactElement {
131131
},
132132
},
133133
],
134-
[data, navigateTo],
134+
[data, router],
135135
);
136136

137137
const table = useMaterialReactTable({
@@ -214,7 +214,7 @@ export default function GBFSVersionAnalytics(): React.ReactElement {
214214
sx={{ mb: 2 }}
215215
startIcon={<ListAltOutlined />}
216216
onClick={() => {
217-
navigateTo(`/metrics/gbfs/feeds?version=${metrics.version}`);
217+
router.push(`/metrics/gbfs/feeds?version=${metrics.version}`);
218218
}}
219219
>
220220
Show Feeds

src/app/screens/Analytics/GTFSFeatureAnalytics/index.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useEffect, useMemo } from 'react';
2-
import { useLocation, useNavigate } from 'react-router-dom';
2+
import { useSearchParams, useRouter } from 'next/navigation';
33
import {
44
MaterialReactTable,
55
type MRT_ColumnDef,
@@ -38,10 +38,9 @@ import {
3838
} from '../../../utils/consts';
3939

4040
export default function GTFSFeatureAnalytics(): React.ReactElement {
41-
const navigateTo = useNavigate();
42-
const { search } = useLocation();
43-
const params = new URLSearchParams(search);
44-
const featureName = params.get('featureName');
41+
const router = useRouter();
42+
const searchParams = useSearchParams();
43+
const featureName = searchParams.get('featureName');
4544
const [data, setData] = useState<FeatureMetrics[]>([]);
4645
const [loading, setLoading] = useState(true);
4746
const [error, setError] = useState<string | null>(null);
@@ -281,7 +280,7 @@ export default function GTFSFeatureAnalytics(): React.ReactElement {
281280
sx={{ mb: 2 }}
282281
startIcon={<ListAltOutlined />}
283282
onClick={() => {
284-
navigateTo(
283+
router.push(
285284
`/metrics/gtfs/feeds?featureName=${metrics.feature}`,
286285
);
287286
}}

src/app/screens/Analytics/GTFSFeedAnalytics/GTFSFeedAnalyticsTable.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
22
import { type MRT_Cell, type MRT_ColumnDef } from 'material-react-table';
33
import { format } from 'date-fns';
44
import { type GTFSFeedMetrics } from '../types';
5-
import { useNavigate } from 'react-router-dom';
5+
import { useRouter } from 'next/navigation';
66
import { Box, IconButton, MenuItem, Stack, Tooltip } from '@mui/material';
77
import { OpenInNew } from '@mui/icons-material';
88
import {
@@ -30,7 +30,7 @@ export const useTableColumns = (
3030
avgWarnings: number,
3131
avgInfos: number,
3232
): Array<MRT_ColumnDef<GTFSFeedMetrics>> => {
33-
const navigate = useNavigate();
33+
const router = useRouter();
3434

3535
return useMemo<Array<MRT_ColumnDef<GTFSFeedMetrics>>>(
3636
() => [
@@ -166,7 +166,7 @@ export const useTableColumns = (
166166
}}
167167
className={'navigable-list-item'}
168168
onClick={() => {
169-
navigate(`/metrics/gtfs/notices?noticeCode=${error}`);
169+
router.push(`/metrics/gtfs/notices?noticeCode=${error}`);
170170
}}
171171
>
172172
{error}
@@ -208,7 +208,7 @@ export const useTableColumns = (
208208
}}
209209
className={'navigable-list-item'}
210210
onClick={() => {
211-
navigate(`/metrics/gtfs/notices?noticeCode=${warning}`);
211+
router.push(`/metrics/gtfs/notices?noticeCode=${warning}`);
212212
}}
213213
>
214214
{warning}
@@ -258,7 +258,7 @@ export const useTableColumns = (
258258
}}
259259
className={'navigable-list-item'}
260260
onClick={() => {
261-
navigate(`/metrics/gtfs/notices?noticeCode=${info}`);
261+
router.push(`/metrics/gtfs/notices?noticeCode=${info}`);
262262
}}
263263
>
264264
{info}
@@ -318,7 +318,7 @@ export const useTableColumns = (
318318
style={{ cursor: 'pointer', marginLeft: '10px' }}
319319
className={'navigable-list-item'}
320320
onClick={() => {
321-
navigate(
321+
router.push(
322322
`/metrics/gtfs/features?featureName=${featureData.feature}`,
323323
);
324324
}}
@@ -349,7 +349,7 @@ export const useTableColumns = (
349349
},
350350
],
351351
[
352-
navigate,
352+
router,
353353
uniqueErrors,
354354
uniqueWarnings,
355355
uniqueInfos,

src/app/screens/Analytics/GTFSFeedAnalytics/index.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
} from '@mui/material';
2020

2121
import '../analytics.css';
22-
import { useLocation } from 'react-router-dom';
22+
import { useSearchParams } from 'next/navigation';
2323
import {
2424
fetchAvailableFilesStart,
2525
selectFile,
@@ -42,13 +42,12 @@ export const getAnalyticsBucketEndpoint = (): string | undefined =>
4242
globalAnalyticsBucketEndpoint;
4343

4444
export default function GTFSFeedAnalytics(): React.ReactElement {
45-
const { search } = useLocation();
46-
const params = new URLSearchParams(search);
45+
const searchParams = useSearchParams();
4746
const { config } = useRemoteConfig();
4847

49-
const severity = params.get('severity');
50-
const noticeCode = params.get('noticeCode');
51-
const featureName = params.get('featureName');
48+
const severity = searchParams.get('severity');
49+
const noticeCode = searchParams.get('noticeCode');
50+
const featureName = searchParams.get('featureName');
5251

5352
const dispatch = useDispatch();
5453
const data = useSelector(selectGTFSFeedMetrics);

src/app/screens/Analytics/GTFSNoticeAnalytics/index.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useEffect, useMemo } from 'react';
2-
import { useLocation, useNavigate } from 'react-router-dom';
2+
import { useSearchParams, useRouter } from 'next/navigation';
33

44
import {
55
MaterialReactTable,
@@ -36,10 +36,9 @@ import { WEB_VALIDATOR_LINK } from '../../../constants/Navigation';
3636
import { useRemoteConfig } from '../../../context/RemoteConfigProvider';
3737

3838
export default function GTFSNoticeAnalytics(): React.ReactElement {
39-
const navigateTo = useNavigate();
40-
const { search } = useLocation();
41-
const params = new URLSearchParams(search);
42-
const noticeCode = params.get('noticeCode');
39+
const router = useRouter();
40+
const searchParams = useSearchParams();
41+
const noticeCode = searchParams.get('noticeCode');
4342
const [data, setData] = useState<NoticeMetrics[]>([]);
4443
const [loading, setLoading] = useState(true);
4544
const [error, setError] = useState<string | null>(null);
@@ -251,7 +250,7 @@ export default function GTFSNoticeAnalytics(): React.ReactElement {
251250
sx={{ mb: 2 }}
252251
startIcon={<ListAltOutlined />}
253252
onClick={() => {
254-
navigateTo(
253+
router.push(
255254
`/metrics/gtfs/feeds?severity=${metrics.severity}&noticeCode=${metrics.notice}`,
256255
);
257256
}}

src/app/screens/CompleteRegistration.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
} from '@mui/material';
1717
import { useAppDispatch } from '../hooks';
1818
import { refreshUserInformation } from '../store/profile-reducer';
19-
import { useNavigate, useSearchParams } from 'react-router-dom';
19+
import { useRouter, useSearchParams } from 'next/navigation';
2020
import {
2121
selectUserProfileStatus,
2222
selectRegistrationError,
@@ -28,13 +28,13 @@ export default function CompleteRegistration(): React.ReactElement {
2828
const auth = getAuth();
2929
const user = auth.currentUser;
3030
const dispatch = useAppDispatch();
31-
const navigateTo = useNavigate();
31+
const router = useRouter();
3232

3333
const userProfileStatus = useSelector(selectUserProfileStatus);
3434
const registrationError = useSelector(selectRegistrationError);
3535

3636
const [isSubmitted, setIsSubmitted] = React.useState(false);
37-
const [searchParams] = useSearchParams();
37+
const searchParams = useSearchParams();
3838

3939
const termsAndConditionsElement = (
4040
<span>
@@ -67,9 +67,9 @@ export default function CompleteRegistration(): React.ReactElement {
6767
React.useEffect(() => {
6868
if (userProfileStatus === 'registered') {
6969
if (searchParams.has('add_feed')) {
70-
navigateTo(ADD_FEED_TARGET, { state: { from: 'registration' } });
70+
router.push(ADD_FEED_TARGET + '?from=registration');
7171
} else {
72-
navigateTo(ACCOUNT_TARGET);
72+
router.push(ACCOUNT_TARGET);
7373
}
7474
}
7575
}, [userProfileStatus]);

0 commit comments

Comments
 (0)