(function () { const SSE_PORT = 8765; const RECONNECT_DELAY = 5000; // miliseconds let eventSource = null; let reconnectTimer = null; function connect() { if (reconnectTimer) { clearTimeout(reconnectTimer); reconnectTimer = null; } if (eventSource) { eventSource.close(); } const url = `${window.location.protocol}//${window.location.hostname}:${SSE_PORT}/events`; eventSource = new EventSource(url); eventSource.onmessage = function (event) { try { const data = JSON.parse(event.data); if (data.type === "reload") { console.log("Repository updated, reloading page..."); // Hard reload to bypass cache window.location.reload(true); } } catch (e) { console.error("Error parsing SSE message:", e); } }; eventSource.onerror = function (error) { console.log("SSE connection error, will reconnect..."); eventSource.close(); // Attempt to reconnect reconnectTimer = setTimeout(connect, RECONNECT_DELAY); }; eventSource.onopen = function () { console.log("Connected to auto-refresh service"); }; } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", connect); } else { connect(); } window.addEventListener("beforeunload", function () { if (eventSource) { eventSource.close(); } }); })();