Spaces:
Build error
Build error
| // Set up event handlers | |
| const reconnectModal = document.getElementById("components-reconnect-modal"); | |
| reconnectModal.addEventListener("components-reconnect-state-changed", handleReconnectStateChanged); | |
| const retryButton = document.getElementById("components-reconnect-button"); | |
| retryButton.addEventListener("click", retry); | |
| const resumeButton = document.getElementById("components-resume-button"); | |
| resumeButton.addEventListener("click", resume); | |
| function handleReconnectStateChanged(event) { | |
| if (event.detail.state === "show") { | |
| reconnectModal.showModal(); | |
| } else if (event.detail.state === "hide") { | |
| reconnectModal.close(); | |
| } else if (event.detail.state === "failed") { | |
| document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible); | |
| } else if (event.detail.state === "rejected") { | |
| location.reload(); | |
| } | |
| } | |
| async function retry() { | |
| document.removeEventListener("visibilitychange", retryWhenDocumentBecomesVisible); | |
| try { | |
| // Reconnect will asynchronously return: | |
| // - true to mean success | |
| // - false to mean we reached the server, but it rejected the connection (e.g., unknown circuit ID) | |
| // - exception to mean we didn't reach the server (this can be sync or async) | |
| const successful = await Blazor.reconnect(); | |
| if (!successful) { | |
| // We have been able to reach the server, but the circuit is no longer available. | |
| // We'll reload the page so the user can continue using the app as quickly as possible. | |
| const resumeSuccessful = await Blazor.resumeCircuit(); | |
| if (!resumeSuccessful) { | |
| location.reload(); | |
| } else { | |
| reconnectModal.close(); | |
| } | |
| } | |
| } catch (err) { | |
| // We got an exception, server is currently unavailable | |
| document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible); | |
| } | |
| } | |
| async function resume() { | |
| try { | |
| const successful = await Blazor.resumeCircuit(); | |
| if (!successful) { | |
| location.reload(); | |
| } | |
| } catch { | |
| location.reload(); | |
| } | |
| } | |
| async function retryWhenDocumentBecomesVisible() { | |
| if (document.visibilityState === "visible") { | |
| await retry(); | |
| } | |
| } | |