Skip to content

Commit 33f6286

Browse files
fix bugs and failed tests
1 parent 83911b2 commit 33f6286

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

src/containers/Tenant/TenantNavigation/useTenantNavigation.tsx

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,40 @@ export function useTenantPage() {
6868

6969
const handleTenantPageChange = React.useCallback(
7070
(value?: TenantPage) => {
71-
setInitialTenantPage(value);
7271
setQueryParams({tenantPage: value});
72+
setInitialTenantPage(value);
7373
},
7474
[setInitialTenantPage, setQueryParams],
7575
);
7676

77-
const parsedInitialPage = tenantPageSchema
78-
.catch(DEFAULT_USER_SETTINGS[SETTING_KEYS.TENANT_INITIAL_PAGE])
79-
.parse(initialTenantPage);
77+
const parsedInitialPage = React.useMemo(
78+
() =>
79+
tenantPageSchema
80+
.catch(DEFAULT_USER_SETTINGS[SETTING_KEYS.TENANT_INITIAL_PAGE])
81+
.parse(initialTenantPage),
82+
[initialTenantPage],
83+
);
84+
85+
const tenantPage = React.useMemo(
86+
() => tenantPageSchema.catch(parsedInitialPage).parse(tenantPageFromQuery),
87+
[tenantPageFromQuery, parsedInitialPage],
88+
);
8089

81-
const tenantPage = tenantPageSchema.catch(parsedInitialPage).parse(tenantPageFromQuery);
90+
React.useEffect(() => {
91+
try {
92+
// Check whether query has valid tenantPage param
93+
const parsedQueryPage = tenantPageSchema.parse(tenantPageFromQuery);
94+
95+
// Save query page as initial if they differ
96+
if (parsedQueryPage !== parsedInitialPage) {
97+
setInitialTenantPage(parsedQueryPage);
98+
}
99+
} catch {
100+
// If query page is not valid, set saved page to query
101+
// `replaceIn` to not create new history entry when applying previously saved tab
102+
setQueryParams({tenantPage: parsedInitialPage}, 'replaceIn');
103+
}
104+
}, [tenantPageFromQuery, parsedInitialPage, setQueryParams, setInitialTenantPage]);
82105

83106
return {tenantPage, handleTenantPageChange} as const;
84107
}

0 commit comments

Comments
 (0)