File size: 1,483 Bytes
d4672d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
// Loading indicator functions
function showLoading() {
    document.getElementById('loading-indicator').style.display = 'block';
}

function hideLoading() {
    document.getElementById('loading-indicator').style.display = 'none';
}

// Axios interceptors for loading indicator
axios.interceptors.request.use((config) => {
    showLoading();
    return config;
}, (error) => {
    hideLoading();
    return Promise.reject(error);
});

axios.interceptors.response.use((response) => {
    hideLoading();
    return response;
}, (error) => {
    hideLoading();
    return Promise.reject(error);
});

// Logout functionality
const logoutButton = document.getElementById('logout');
if (logoutButton) {
    logoutButton.addEventListener('click', async (e) => {
        e.preventDefault();
        try {
            const response = await axios.get('/logout');
            window.location.href = '/';
        } catch (error) {
            console.error('Logout failed:', error);
            alert('Logout failed. Please try again.');
        }
    });
}

// Error handling function
function handleError(error) {
    console.error('Error:', error);
    if (error.response) {
        alert(`Error: ${error.response.data.error || 'An unexpected error occurred.'}`);
    } else if (error.request) {
        alert('Error: No response received from the server. Please check your internet connection.');
    } else {
        alert('Error: An unexpected error occurred. Please try again.');
    }
}