aboutsummaryrefslogtreecommitdiff
path: root/client/config.js
blob: d86da9e9be65c674f37f313d01b4d13bf071c735 (plain)
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
// JChat Client Configuration
window.JChatConfig = {
    // Server configuration
    API_BASE_URL: 'http://api.jchat.localhost',
    WEB_BASE_URL: 'http://web.jchat.localhost',
    
    // Feature flags
    FEATURES: {
        REGISTRATION_ENABLED: true,
        GUEST_ACCESS: false,
        FILE_UPLOADS: true,
        REAL_TIME_UPDATES: true
    },
    
    // UI configuration
    UI: {
        THEME: 'light',
        AUTO_FOCUS_MESSAGE_INPUT: true,
        SHOW_TYPING_INDICATORS: true,
        MESSAGE_PAGE_SIZE: 50,
        CONVERSATION_PAGE_SIZE: 20
    },
    
    // Polling configuration
    POLLING: {
        INTERVAL_MS: 2000,
        MAX_RETRIES: 3,
        BACKOFF_MULTIPLIER: 2
    },
    
    // Authentication
    AUTH: {
        TOKEN_STORAGE_KEY: 'jchat_auth_token',
        USER_STORAGE_KEY: 'jchat_user_data',
        AUTO_LOGOUT_ON_TOKEN_EXPIRE: true
    },
    
    // Development/Debug
    DEBUG: {
        LOG_LEVEL: 'info', // 'debug', 'info', 'warn', 'error'
        SHOW_NETWORK_REQUESTS: false,
        MOCK_SLOW_NETWORK: false
    }
};

// Environment-specific overrides
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
    // Development overrides
    window.JChatConfig.DEBUG.LOG_LEVEL = 'debug';
    window.JChatConfig.DEBUG.SHOW_NETWORK_REQUESTS = true;
}

// Make config immutable
Object.freeze(window.JChatConfig);