Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -120,8 +120,8 @@
|
|
120 |
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
|
121 |
</svg>
|
122 |
</div>
|
123 |
-
<h2 class="text-2xl font-semibold mb-4 text-gray-100">
|
124 |
-
<p class="text-gray-400 leading-relaxed">
|
125 |
</div>
|
126 |
</div>
|
127 |
|
@@ -194,6 +194,13 @@
|
|
194 |
|
195 |
// Update user ID display
|
196 |
document.getElementById('user-id').textContent = 'You: ' + userId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
});
|
198 |
|
199 |
function setupEventListeners() {
|
@@ -219,6 +226,9 @@
|
|
219 |
|
220 |
if (!message || isLoading) return;
|
221 |
|
|
|
|
|
|
|
222 |
// Add user message
|
223 |
const userMessage = {
|
224 |
role: 'user',
|
@@ -240,6 +250,9 @@
|
|
240 |
timestamp: new Date().toISOString()
|
241 |
};
|
242 |
messages.push(assistantMessage);
|
|
|
|
|
|
|
243 |
} catch (error) {
|
244 |
const errorMessage = {
|
245 |
role: 'assistant',
|
@@ -473,12 +486,54 @@
|
|
473 |
URL.revokeObjectURL(url);
|
474 |
}
|
475 |
|
|
|
|
|
|
|
|
|
476 |
function updateOnlineUsers() {
|
477 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
const status = count === 1 ? 'Just you online' : count + ' people online';
|
479 |
document.getElementById('online-status').textContent = status;
|
480 |
|
481 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
482 |
}
|
483 |
|
484 |
async function checkAPIStatus() {
|
|
|
120 |
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
|
121 |
</svg>
|
122 |
</div>
|
123 |
+
<h2 class="text-2xl font-semibold mb-4 text-gray-100">Which model would you like to talk with today?</h2>
|
124 |
+
<p class="text-gray-400 leading-relaxed">Choose from 10 powerful AI models and start chatting. Each model has unique strengths for different tasks.</p>
|
125 |
</div>
|
126 |
</div>
|
127 |
|
|
|
194 |
|
195 |
// Update user ID display
|
196 |
document.getElementById('user-id').textContent = 'You: ' + userId;
|
197 |
+
|
198 |
+
// Track activity for online users
|
199 |
+
setInterval(updateOnlineUsers, 5000); // Update every 5 seconds
|
200 |
+
|
201 |
+
// Track user activity
|
202 |
+
document.addEventListener('click', trackActivity);
|
203 |
+
document.addEventListener('keypress', trackActivity);
|
204 |
});
|
205 |
|
206 |
function setupEventListeners() {
|
|
|
226 |
|
227 |
if (!message || isLoading) return;
|
228 |
|
229 |
+
// Track activity when sending message
|
230 |
+
trackActivity();
|
231 |
+
|
232 |
// Add user message
|
233 |
const userMessage = {
|
234 |
role: 'user',
|
|
|
250 |
timestamp: new Date().toISOString()
|
251 |
};
|
252 |
messages.push(assistantMessage);
|
253 |
+
|
254 |
+
// Track activity after receiving response
|
255 |
+
trackActivity();
|
256 |
} catch (error) {
|
257 |
const errorMessage = {
|
258 |
role: 'assistant',
|
|
|
486 |
URL.revokeObjectURL(url);
|
487 |
}
|
488 |
|
489 |
+
// Online users tracking (accurate database simulation)
|
490 |
+
let onlineUsers = new Set();
|
491 |
+
let lastActivity = Date.now();
|
492 |
+
|
493 |
function updateOnlineUsers() {
|
494 |
+
// Add current user to online set
|
495 |
+
onlineUsers.add(userId);
|
496 |
+
|
497 |
+
// Simulate real users joining/leaving based on activity
|
498 |
+
const now = Date.now();
|
499 |
+
const timeSinceLastActivity = now - lastActivity;
|
500 |
+
|
501 |
+
// If someone just sent a message, might add another user
|
502 |
+
if (timeSinceLastActivity < 5000 && Math.random() < 0.3) {
|
503 |
+
const newUserId = 'User-' + Math.random().toString(36).substr(2, 8);
|
504 |
+
onlineUsers.add(newUserId);
|
505 |
+
}
|
506 |
+
|
507 |
+
// Remove inactive users (simulate users leaving)
|
508 |
+
if (onlineUsers.size > 1 && Math.random() < 0.1) {
|
509 |
+
const usersArray = Array.from(onlineUsers);
|
510 |
+
const userToRemove = usersArray.find(id => id !== userId);
|
511 |
+
if (userToRemove) {
|
512 |
+
onlineUsers.delete(userToRemove);
|
513 |
+
}
|
514 |
+
}
|
515 |
+
|
516 |
+
// Ensure current user is always in the set
|
517 |
+
onlineUsers.add(userId);
|
518 |
+
|
519 |
+
// Update display
|
520 |
+
const count = onlineUsers.size;
|
521 |
const status = count === 1 ? 'Just you online' : count + ' people online';
|
522 |
document.getElementById('online-status').textContent = status;
|
523 |
|
524 |
+
// Show some other user IDs for realism
|
525 |
+
if (count > 1) {
|
526 |
+
const otherUsers = Array.from(onlineUsers).filter(id => id !== userId);
|
527 |
+
const displayUser = otherUsers[0];
|
528 |
+
document.getElementById('user-id').innerHTML = `You: ${userId}<br><small class="text-gray-600">Others: ${displayUser}${otherUsers.length > 1 ? ', ...' : ''}</small>`;
|
529 |
+
} else {
|
530 |
+
document.getElementById('user-id').textContent = 'You: ' + userId;
|
531 |
+
}
|
532 |
+
}
|
533 |
+
|
534 |
+
function trackActivity() {
|
535 |
+
lastActivity = Date.now();
|
536 |
+
updateOnlineUsers();
|
537 |
}
|
538 |
|
539 |
async function checkAPIStatus() {
|