{% load stapel_translate %} {% block title %}Translator Dashboard{% endblock %} {% block extra_css %}{% endblock %}
{% block breadcrumb %}{% endblock %} {% if messages %} {% for message in messages %}
{{ message }}
{% endfor %} {% endif %} {% block content %}{% endblock %}
{% include "dashboard/_safe_dom.html" %} {% block extra_js %}{% endblock %} (function () { const REFRESH_INTERVAL = 5 * 60 * 1000; // 5 minutes async function refreshToken() { try { const response = await fetch( "/auth/api/token/refresh/", { method: "GET", credentials: "include", }, ); if (!response.ok) { console.warn("Token refresh failed"); } } catch (err) { console.warn("Token refresh error:", err); } } // Refresh token periodically setInterval(refreshToken, REFRESH_INTERVAL); // Also refresh on page visibility change (when user returns to tab) document.addEventListener("visibilitychange", function () { if (document.visibilityState === "visible") { refreshToken(); } }); })(); async function logout() { try { await fetch("/auth/api/logout/", { method: "GET", credentials: "include", }); } catch (err) { console.warn("Logout error:", err); } window.location.href = '{% url "dashboard-login" %}'; } window.stapelDom.register({logout: logout});