1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-07-26 13:48:33 +02:00

feat: futureproofing last viewed page redirect (#9794)

You should not be able to break initial page redirect even if you set
'/' as target. It is not strictly needed in the current code path. This
will create a redirect loop only if you manually modify local storage.
It just makes this part safer if it is ever modified.
This commit is contained in:
Tymoteusz Czech 2025-04-17 17:40:04 +02:00 committed by GitHub
parent ee9b0a0193
commit 6403ae7f9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,10 +6,12 @@ import Loader from './common/Loader/Loader';
import { useLocalStorageState } from 'hooks/useLocalStorageState';
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
const defaultPage = '/personal';
export const useLastViewedPage = (location?: Location) => {
const [state, setState] = useLocalStorageState<string>(
'lastViewedPage',
'/personal',
defaultPage,
7 * 24 * 60 * 60 * 1000, // 7 days, left to promote seeing Personal dashboard from time to time
);
@ -55,5 +57,9 @@ export const InitialRedirect = () => {
return <Navigate to={`/projects/${lastViewedProject}`} replace />;
}
return <Navigate to={lastViewedPage} replace />;
if (lastViewedPage && lastViewedPage !== '/') {
return <Navigate to={lastViewedPage} replace />;
}
return <Navigate to={defaultPage} replace />;
};