File size: 4,923 Bytes
91025a4
821b0e4
d1e876b
91025a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
821b0e4
 
 
 
 
 
 
 
 
 
 
d1e876b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
821b0e4
d1e876b
 
91025a4
d1e876b
 
 
 
 
 
 
 
 
 
 
 
 
722897a
 
d1e876b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
821b0e4
d1e876b
 
91025a4
d1e876b
821b0e4
d1e876b
 
 
722897a
 
d1e876b
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

// 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);
        }
    });
}