Fix Settings crash: temporal dead zone on checkDdnsStatus
Unit Tests / test (push) Successful in 7m37s
Unit Tests / test (push) Successful in 7m37s
checkDdnsStatus was declared via useCallback at line ~526 but referenced in a useEffect dependency array at line 419 — before its declaration. JavaScript const/let are not hoisted; accessing them before declaration throws a ReferenceError (temporal dead zone). In the production build this surfaced as: ReferenceError: Cannot access 'Pn' before initialization and caused the Settings page to crash blank on load. Moved the checkDdnsStatus useCallback definition to immediately before the useEffect that lists it as a dependency. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -416,6 +416,18 @@ function Settings() {
|
|||||||
useEffect(() => { loadAll(); }, [loadAll]);
|
useEffect(() => { loadAll(); }, [loadAll]);
|
||||||
useEffect(() => () => clearInterval(certPollRef.current), []);
|
useEffect(() => () => clearInterval(certPollRef.current), []);
|
||||||
|
|
||||||
|
const checkDdnsStatus = useCallback(async () => {
|
||||||
|
setDdnsStatusLoading(true);
|
||||||
|
try {
|
||||||
|
const res = await ddnsAPI.getStatus();
|
||||||
|
setDdnsStatus(res.data);
|
||||||
|
} catch {
|
||||||
|
setDdnsStatus(null);
|
||||||
|
} finally {
|
||||||
|
setDdnsStatusLoading(false);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (domainMode === 'pic_ngo') checkDdnsStatus();
|
if (domainMode === 'pic_ngo') checkDdnsStatus();
|
||||||
}, [domainMode, checkDdnsStatus]); // eslint-disable-line react-hooks/exhaustive-deps
|
}, [domainMode, checkDdnsStatus]); // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
@@ -523,18 +535,6 @@ function Settings() {
|
|||||||
}
|
}
|
||||||
}, [ddnsCfToken, domainName]);
|
}, [ddnsCfToken, domainName]);
|
||||||
|
|
||||||
const checkDdnsStatus = useCallback(async () => {
|
|
||||||
setDdnsStatusLoading(true);
|
|
||||||
try {
|
|
||||||
const res = await ddnsAPI.getStatus();
|
|
||||||
setDdnsStatus(res.data);
|
|
||||||
} catch {
|
|
||||||
setDdnsStatus(null);
|
|
||||||
} finally {
|
|
||||||
setDdnsStatusLoading(false);
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const startCertPolling = useCallback(() => {
|
const startCertPolling = useCallback(() => {
|
||||||
clearInterval(certPollRef.current);
|
clearInterval(certPollRef.current);
|
||||||
setCertAcquiring(true);
|
setCertAcquiring(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user