(fix): retry when iota is unavailable
Some checks failed
/ build-mobile (push) Failing after 1m0s
/ build-web (push) Failing after 1m13s
/ build-desktop (linux) (push) Failing after 1m13s
/ release (push) Has been skipped

This commit is contained in:
Alois 2026-07-29 02:37:18 +02:00
commit 5ece90ef4b
Signed by: alois
SSH key fingerprint: SHA256:GBzT2DXvAuGV9XIV5W3WrzVpjU54FThmxHXdbz95J24
3 changed files with 23 additions and 13 deletions

View file

@ -435,15 +435,21 @@ export function Provider(props: {
const stateSync = new Promise<ProtocolMessage<"ClientStateSync">>(
(resolve, reject) => {
let unsubscribeStateSync = () => {};
let unsubscribeNoIota = () => {};
const cleanupStateSync = () => {
clearTimeout(timeout);
unsubscribeStateSync();
unsubscribeNoIota();
};
const timeout = setTimeout(() => {
unsubscribe();
cleanupStateSync();
reject(new Error("Initial state synchronization timed out"));
}, 120_000);
const unsubscribe = activeClient.subscribe(
unsubscribeStateSync = activeClient.subscribe(
"ClientStateSync",
(message) => {
clearTimeout(timeout);
unsubscribe();
cleanupStateSync();
try {
resolve(validateResponse("ClientStateSync", message));
} catch (error) {
@ -451,6 +457,10 @@ export function Provider(props: {
}
},
);
unsubscribeNoIota = activeClient.subscribe("ErrorNoIota", () => {
cleanupStateSync();
reject(new Error("No Iota is currently connected"));
});
},
);
const [, finalResponse] = await Promise.all([