refactor(continue-page): simplify useEffect to avoid unnecessary dependencies

This commit is contained in:
Nicolas Meienberger
2026-02-11 18:40:24 +01:00
parent 22c4c262ea
commit d7b00ffeea

View File

@@ -32,34 +32,41 @@ export const ContinuePage = () => {
cookieDomain,
);
const handleRedirect = useCallback(() => {
const hasValidRedirect = valid && allowedProto;
const showUntrustedWarning =
hasValidRedirect && !trusted && !disableUiWarnings;
const showInsecureWarning =
hasValidRedirect && httpsDowngrade && !disableUiWarnings;
const shouldAutoRedirect =
isLoggedIn &&
hasValidRedirect &&
!showUntrustedWarning &&
!showInsecureWarning;
const redirectToTarget = useCallback(() => {
if (!url || hasRedirected.current) {
return;
}
hasRedirected.current = true;
setIsLoading(true);
window.location.assign(url!);
window.location.assign(url);
}, [url]);
const handleRedirect = useCallback(() => {
setIsLoading(true);
redirectToTarget();
}, [redirectToTarget]);
useEffect(() => {
if (!isLoggedIn) {
return;
}
if (hasRedirected.current) {
return;
}
if (
(!valid || !allowedProto || !trusted || httpsDowngrade) &&
!disableUiWarnings
) {
if (!shouldAutoRedirect) {
return;
}
const auto = setTimeout(() => {
handleRedirect();
redirectToTarget();
}, 100);
const reveal = setTimeout(() => {
setIsLoading(false);
setShowRedirectButton(true);
}, 5000);
@@ -67,18 +74,7 @@ export const ContinuePage = () => {
clearTimeout(auto);
clearTimeout(reveal);
};
}, [
isLoggedIn,
hasRedirected,
valid,
allowedProto,
trusted,
httpsDowngrade,
disableUiWarnings,
setIsLoading,
handleRedirect,
setShowRedirectButton,
]);
}, [shouldAutoRedirect, redirectToTarget]);
if (!isLoggedIn) {
return (
@@ -89,11 +85,11 @@ export const ContinuePage = () => {
);
}
if (!valid || !allowedProto) {
if (!hasValidRedirect) {
return <Navigate to="/logout" replace />;
}
if (!trusted && !disableUiWarnings) {
if (showUntrustedWarning) {
return (
<Card role="alert" aria-live="assertive" className="min-w-xs sm:min-w-sm">
<CardHeader>
@@ -113,7 +109,7 @@ export const ContinuePage = () => {
</CardHeader>
<CardFooter className="flex flex-col items-stretch gap-2">
<Button
onClick={() => handleRedirect()}
onClick={handleRedirect}
loading={isLoading}
variant="destructive"
>
@@ -131,7 +127,7 @@ export const ContinuePage = () => {
);
}
if (httpsDowngrade && !disableUiWarnings) {
if (showInsecureWarning) {
return (
<Card role="alert" aria-live="assertive" className="min-w-xs sm:min-w-sm">
<CardHeader>
@@ -150,7 +146,7 @@ export const ContinuePage = () => {
</CardHeader>
<CardFooter className="flex flex-col items-stretch gap-2">
<Button
onClick={() => handleRedirect()}
onClick={handleRedirect}
loading={isLoading}
variant="warning"
>
@@ -178,7 +174,7 @@ export const ContinuePage = () => {
</CardHeader>
{showRedirectButton && (
<CardFooter className="flex flex-col items-stretch">
<Button onClick={() => handleRedirect()}>
<Button onClick={handleRedirect}>
{t("continueRedirectManually")}
</Button>
</CardFooter>