mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
fix: clear expire timer on 410/error and reset pollInFlight on retry
This commit is contained in:
@@ -235,7 +235,7 @@ export default function TelegramLoginButton({ referralCode }: TelegramLoginButto
|
|||||||
const startDeepLinkAuth = useCallback(async () => {
|
const startDeepLinkAuth = useCallback(async () => {
|
||||||
setDeepLinkError('');
|
setDeepLinkError('');
|
||||||
|
|
||||||
// Clear any previous timers
|
// Clear any previous timers and in-flight guard
|
||||||
if (pollTimeoutRef.current) {
|
if (pollTimeoutRef.current) {
|
||||||
clearTimeout(pollTimeoutRef.current);
|
clearTimeout(pollTimeoutRef.current);
|
||||||
pollTimeoutRef.current = null;
|
pollTimeoutRef.current = null;
|
||||||
@@ -244,6 +244,7 @@ export default function TelegramLoginButton({ referralCode }: TelegramLoginButto
|
|||||||
clearTimeout(expireTimeoutRef.current);
|
clearTimeout(expireTimeoutRef.current);
|
||||||
expireTimeoutRef.current = null;
|
expireTimeoutRef.current = null;
|
||||||
}
|
}
|
||||||
|
pollInFlightRef.current = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Consume campaign slug ONCE (first call only).
|
// Consume campaign slug ONCE (first call only).
|
||||||
@@ -288,14 +289,22 @@ export default function TelegramLoginButton({ referralCode }: TelegramLoginButto
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (err.response?.status === 410) {
|
if (err.response?.status === 410) {
|
||||||
// Token expired
|
// Token expired — clear expire timer to prevent stale timer killing future sessions
|
||||||
|
if (expireTimeoutRef.current) {
|
||||||
|
clearTimeout(expireTimeoutRef.current);
|
||||||
|
expireTimeoutRef.current = null;
|
||||||
|
}
|
||||||
setDeepLinkPolling(false);
|
setDeepLinkPolling(false);
|
||||||
setDeepLinkToken(null);
|
setDeepLinkToken(null);
|
||||||
setDeepLinkError(t('auth.deepLinkExpired'));
|
setDeepLinkError(t('auth.deepLinkExpired'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Other error — stop polling
|
// Other error — stop polling and clear expire timer
|
||||||
|
if (expireTimeoutRef.current) {
|
||||||
|
clearTimeout(expireTimeoutRef.current);
|
||||||
|
expireTimeoutRef.current = null;
|
||||||
|
}
|
||||||
setDeepLinkPolling(false);
|
setDeepLinkPolling(false);
|
||||||
setDeepLinkError(t('common.error'));
|
setDeepLinkError(t('common.error'));
|
||||||
} finally {
|
} finally {
|
||||||
@@ -376,12 +385,20 @@ export default function TelegramLoginButton({ referralCode }: TelegramLoginButto
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (err.response?.status === 410) {
|
if (err.response?.status === 410) {
|
||||||
|
if (expireTimeoutRef.current) {
|
||||||
|
clearTimeout(expireTimeoutRef.current);
|
||||||
|
expireTimeoutRef.current = null;
|
||||||
|
}
|
||||||
setDeepLinkPolling(false);
|
setDeepLinkPolling(false);
|
||||||
setDeepLinkToken(null);
|
setDeepLinkToken(null);
|
||||||
setDeepLinkError(t('auth.deepLinkExpired'));
|
setDeepLinkError(t('auth.deepLinkExpired'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (expireTimeoutRef.current) {
|
||||||
|
clearTimeout(expireTimeoutRef.current);
|
||||||
|
expireTimeoutRef.current = null;
|
||||||
|
}
|
||||||
setDeepLinkPolling(false);
|
setDeepLinkPolling(false);
|
||||||
setDeepLinkError(t('common.error'));
|
setDeepLinkError(t('common.error'));
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user