// import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client@1.9.0/dist/index.min.js"; // Read/write tokens from sessionStorage function getReadToken() { return sessionStorage.getItem('hf_read_token') || ''; } function getWriteToken() { return sessionStorage.getItem('hf_write_token') || ''; } // Helper to add tokens to every API call function withTokens(obj = {}) { return { ...obj, read_token: getReadToken(), write_token: getWriteToken(), }; } // Helper to call secure server-side proxy async function callSecureApi(fn, args) { const resp = await fetch('/api/proxy', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ fn, args }) }); if (!resp.ok) throw new Error('Proxy error: ' + resp.status); return await resp.json(); } const loginForm = document.getElementById('loginForm'); const signupForm = document.getElementById('signupForm'); // Ensure overlay exists and setup const loadingOverlay = document.getElementById('loadingOverlay'); if (loadingOverlay) { loadingOverlay.style.display = 'none'; } // Helper to toggle the loading overlay - PROPERLY function setLoading(isLoading) { const overlay = document.getElementById('loadingOverlay'); if (!overlay) { console.error('Loading overlay element not found!'); return; } if (isLoading) { overlay.style.display = 'flex'; overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.6)'; overlay.style.backdropFilter = 'blur(5px)'; overlay.style.justifyContent = 'center'; overlay.style.alignItems = 'center'; overlay.style.zIndex = '9999'; } else { overlay.style.display = 'none'; } } // Registration Logic if (signupForm) { signupForm.addEventListener('submit', async (e) => { e.preventDefault(); setLoading(true); const user = document.getElementById('username').value; const pass = document.getElementById('password').value; try { const result = await callSecureApi("/create_user", withTokens({ user_id: user, password: pass, })); // Debug: log the result console.log("/create_user result:", result.data); let log = ""; if (typeof result.data === "string") { log = result.data.toLowerCase(); } else if (Array.isArray(result.data)) { log = result.data.map(x => String(x).toLowerCase()).join(" "); } else if (typeof result.data === "object" && result.data !== null) { log = JSON.stringify(result.data).toLowerCase(); } if (log.includes("success") || log.includes("user created")) { sessionStorage.setItem("pockit_user", user); sessionStorage.setItem("pockit_pass", pass); sessionStorage.setItem('hf_read_token', 'hf_server_token'); sessionStorage.setItem('hf_write_token', 'hf_server_token'); window.location.href = "dashboard.html"; // Success redirect } else { alert("Error: " + (typeof result.data === "object" ? JSON.stringify(result.data) : result.data)); setLoading(false); } } catch (err) { console.error(err); setLoading(false); } }); } // Login Logic if (loginForm) { loginForm.addEventListener('submit', async (e) => { e.preventDefault(); setLoading(true); const user = document.getElementById('username').value; const pass = document.getElementById('password').value; try { const result = await callSecureApi("/get_files_secure", withTokens({ user_id: user, password: pass, })); // Status message is at index 1 for get_files_secure const status = result.data[1]?.toLowerCase?.() || ""; if (status.includes("found") || status.includes("success")) { sessionStorage.setItem("pockit_user", user); sessionStorage.setItem("pockit_pass", pass); sessionStorage.setItem('hf_read_token', 'hf_server_token'); sessionStorage.setItem('hf_write_token', 'hf_server_token'); window.location.href = "dashboard.html"; // Success redirect } else { alert("Login failed: " + result.data[1]); setLoading(false); } } catch (err) { console.error(err); alert("Connection error."); setLoading(false); } }); }