// User profile JavaScript

// Function to set viewport dimensions for user page
function setUserViewportDimensions() {
    const doc = document.documentElement;
    doc.style.setProperty('--app-height', `${window.innerHeight}px`);
    doc.style.setProperty('--app-width', `${window.innerWidth}px`);
}

// Initialize when DOM is loaded
document.addEventListener('DOMContentLoaded', () => {
    // Set initial viewport dimensions and listen for resize events
    setUserViewportDimensions();
    window.addEventListener('resize', setUserViewportDimensions);
    window.addEventListener('orientationchange', () => {
        setTimeout(setUserViewportDimensions, 100);
    });
    
    checkUserAuth();
    loadUserProfile();
    setupEventListeners();
});

// Check if user is authenticated
async function checkUserAuth() {
    try {
        const response = await fetch('/api/auth/check');
        const data = await response.json();
        
        if (!data.authenticated) {
            window.location.href = '/login.html';
            return;
        }
        
        // Update user info in header
        const userInfo = document.getElementById('user-info');
        if (userInfo && data.user) {
            userInfo.textContent = `${data.user.name || data.user.email}`;
        }
        
    } catch (error) {
        console.error('Auth check failed:', error);
        window.location.href = '/login.html';
    }
}

// Load user profile information
async function loadUserProfile() {
    try {
        const response = await fetch('/api/auth/check');
        const data = await response.json();
        
        if (data.authenticated && data.user) {
            document.getElementById('profile-email').textContent = data.user.email || 'N/A';
            document.getElementById('profile-name').textContent = data.user.name || 'N/A';
            document.getElementById('profile-role').textContent = data.user.isAdmin ? 'Administrator' : 'User';
        }
        
    } catch (error) {
        console.error('Failed to load profile:', error);
        showStatus('Failed to load profile information', 'error');
    }
}

// Setup event listeners
function setupEventListeners() {
    // Logout button
    const logoutBtn = document.getElementById('logout-btn');
    if (logoutBtn) {
        logoutBtn.addEventListener('click', handleLogout);
    }
}

// Handle logout
async function handleLogout() {
    try {
        const response = await fetch('/api/auth/logout', {
            method: 'POST',
            credentials: 'include'
        });
        
        if (response.ok) {
            window.location.href = '/login.html';
        } else {
            throw new Error('Logout failed');
        }
        
    } catch (error) {
        console.error('Logout error:', error);
        showStatus('Logout failed', 'error');
    }
}

// Show status message
function showStatus(message, type = 'info') {
    const container = document.getElementById('status-container');
    if (!container) return;
    
    const statusDiv = document.createElement('div');
    statusDiv.className = `status-message status-${type}`;
    statusDiv.textContent = message;
    
    container.appendChild(statusDiv);
    
    // Auto remove after 5 seconds
    setTimeout(() => {
        if (statusDiv.parentNode) {
            statusDiv.parentNode.removeChild(statusDiv);
        }
    }, 5000);
}
