Skip to content

Commit 90fb627

Browse files
authored
fix(useTenantNavigation): prevent possible collisions (#3238)
1 parent 799022f commit 90fb627

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed

src/containers/Tenant/Diagnostics/DiagnosticsPages.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React from 'react';
22

33
import type {LabelProps} from '@gravity-ui/uikit';
4-
import {StringParam, useQueryParams} from 'use-query-params';
4+
import {useLocation} from 'react-router-dom';
55

6-
import {getTenantPath} from '../../../routes';
6+
import {getTenantPath, parseQuery} from '../../../routes';
77
import {TENANT_DIAGNOSTICS_TABS_IDS} from '../../../store/reducers/tenant/constants';
88
import type {TenantDiagnosticsTab} from '../../../store/reducers/tenant/types';
99
import {EPathSubType, EPathType} from '../../../types/api/schema';
@@ -265,12 +265,8 @@ export const getPagesByType = (
265265
};
266266

267267
export const useDiagnosticsPageLinkGetter = () => {
268-
const [queryParams] = useQueryParams({
269-
database: StringParam,
270-
schema: StringParam,
271-
backend: StringParam,
272-
clusterName: StringParam,
273-
});
268+
const location = useLocation();
269+
const queryParams = parseQuery(location);
274270

275271
const getLink = React.useCallback(
276272
(tab: string, params?: TenantQuery) => {

src/containers/Tenant/TenantNavigation/useTenantNavigation.tsx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ export function useTenantPage() {
6969
const handleTenantPageChange = React.useCallback(
7070
(value?: TenantPage) => {
7171
setQueryParams({tenantPage: value});
72+
setInitialTenantPage(value);
7273
},
73-
[setQueryParams],
74+
[setQueryParams, setInitialTenantPage],
7475
);
7576

7677
const parsedInitialPage = React.useMemo(
@@ -88,19 +89,12 @@ export function useTenantPage() {
8889

8990
React.useEffect(() => {
9091
try {
91-
// Check whether query has valid tenantPage param
92-
const parsedQueryPage = tenantPageSchema.parse(tenantPageFromQuery);
93-
94-
// Save query page as initial if they differ
95-
if (parsedQueryPage !== parsedInitialPage) {
96-
setInitialTenantPage(parsedQueryPage);
97-
}
92+
tenantPageSchema.parse(tenantPageFromQuery);
9893
} catch {
99-
// If query page is not valid, set saved page to query
100-
// `replaceIn` to not create new history entry when applying previously saved tab
94+
// Invalid value in URL - replace with valid fallback
10195
setQueryParams({tenantPage: parsedInitialPage}, 'replaceIn');
10296
}
103-
}, [tenantPageFromQuery, parsedInitialPage, setQueryParams, setInitialTenantPage]);
97+
}, [parsedInitialPage, setQueryParams, tenantPageFromQuery]);
10498

10599
return {tenantPage, handleTenantPageChange} as const;
106100
}

0 commit comments

Comments
 (0)