PageSourceSearch

https://hueberlivepreview.netlify.app/js/tokenManager.js

js hueberlivepreview.netlify.app collected 2026-10-03 10:53:21 UTC 2,683 bytes, 77 lines download raw bytes

1// Token Manager for handling JWT token refresh
2console.log('TokenManager script loaded');
3
4class TokenManager {
5    constructor() {
6        this.checkInterval = null;
7        this.init();
8    }
9
10    init() {
11        // Check token on page load
12        this.checkTokenExpiration();
13        
14        // Set up periodic checks (every 2 minutes)
15        // This is more efficient than 30 seconds for a 5-minute JWT token
16        this.checkInterval = setInterval(() => {
17            //console.log('TokenManager periodic check');
18            this.checkTokenExpiration();
19        }, 2 * 60 * 1000); // 2 minutes in milliseconds
20    }
21
22    async checkTokenExpiration() {
23        //console.log('TokenManager checkTokenExpiration called');
24        try {
25            //console.log('Making request to /api/auth/refresh');
26            // Call your refresh API endpoint
27            const response = await fetch('/api/auth/refresh', {
28                method: 'POST',
29                headers: {
30                    'Content-Type': 'application/json',
31                },
32
33            });
34
35            //console.log('Response status:', response.status);
36            //console.log('Response headers:', Object.fromEntries(response.headers.entries()));
37            
38            if (!response.ok) {
39                // Try to get error details
40                const errorText = await response.text();
41                console.log('Error response body:', errorText);
42                
43                // Token refresh failed, redirect to login
44                //console.log('Token refresh failed, redirecting to login');
45                //window.location.href = '/login';
46            } else {
47                const responseText = await response.text();
48                //console.log('Success response body:', responseText);
49                //console.log('Token refresh successful');
50            }
51        } catch (error) {
52            console.error('Error checking token expiration:', error);
53            console.error('Error details:', {
54                message: error.message,
55                stack: error.stack,
56                name: error.name
57            });
58        }
59    }
60
61    destroy() {
62        if (this.checkInterval) {
63            clearInterval(this.checkInterval);
64        }
65    }
66}
67
68// Initialize token manager when DOM is loaded
69if (typeof window !== 'undefined') {
70    console.log('Window object available, setting up DOMContentLoaded listener');
71    document.addEventListener('DOMContentLoaded', () => {
72        console.log('DOMContentLoaded fired, creating TokenManager');
73        window.tokenManager = new TokenManager();
74    });
75} else {
76    console.log('Window object not available');
77} 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.