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