make the online listing specific to the type of chat

pull/90/head
Aevann 2023-01-20 06:25:35 +02:00
parent e044ddde90
commit 70ab540717
1 changed files with 16 additions and 11 deletions

View File

@ -32,8 +32,11 @@ typing = {
f'{SITE_FULL}/chat': [], f'{SITE_FULL}/chat': [],
f'{SITE_FULL}/admin/chat': [] f'{SITE_FULL}/admin/chat': []
} }
online = [] online = {
cache.set(CHAT_ONLINE_CACHE_KEY, len(online), timeout=0) f'{SITE_FULL}/chat': [],
f'{SITE_FULL}/admin/chat': []
}
cache.set(CHAT_ONLINE_CACHE_KEY, len(online[f'{SITE_FULL}/chat']), timeout=0)
muted = cache.get(f'muted') or { muted = cache.get(f'muted') or {
f'{SITE_FULL}/chat': {}, f'{SITE_FULL}/chat': {},
f'{SITE_FULL}/admin/chat': {} f'{SITE_FULL}/admin/chat': {}
@ -129,21 +132,24 @@ def speak(data, v):
return '', 204 return '', 204
def refresh_online():
emit("online", online[request.referrer], room=request.referrer, broadcast=True)
if request.referrer == f'{SITE_FULL}/chat':
cache.set(CHAT_ONLINE_CACHE_KEY, len(online[request.referrer]), timeout=0)
@socketio.on('connect') @socketio.on('connect')
@admin_level_required(PERMS['CHAT']) @admin_level_required(PERMS['CHAT'])
def connect(v): def connect(v):
join_room(request.referrer) join_room(request.referrer)
if v.username not in online: if v.username not in online[request.referrer]:
online.append(v.username) online[request.referrer].append(v.username)
emit("online", online, room=request.referrer, broadcast=True) refresh_online()
cache.set(CHAT_ONLINE_CACHE_KEY, len(online), timeout=0)
if not socket_ids_to_user_ids.get(request.sid): if not socket_ids_to_user_ids.get(request.sid):
socket_ids_to_user_ids[request.sid] = v.id socket_ids_to_user_ids[request.sid] = v.id
user_ids_to_socket_ids[v.id] = request.sid user_ids_to_socket_ids[v.id] = request.sid
emit('online', online, room=request.referrer)
emit('catchup', messages[request.referrer], room=request.referrer) emit('catchup', messages[request.referrer], room=request.referrer)
emit('typing', typing[request.referrer], room=request.referrer) emit('typing', typing[request.referrer], room=request.referrer)
return '', 204 return '', 204
@ -151,10 +157,9 @@ def connect(v):
@socketio.on('disconnect') @socketio.on('disconnect')
@admin_level_required(PERMS['CHAT']) @admin_level_required(PERMS['CHAT'])
def disconnect(v): def disconnect(v):
if v.username in online: if v.username in online[request.referrer]:
online.remove(v.username) online[request.referrer].remove(v.username)
emit("online", online, room=request.referrer, broadcast=True) refresh_online()
cache.set(CHAT_ONLINE_CACHE_KEY, len(online), timeout=0)
if v.username in typing[request.referrer]: if v.username in typing[request.referrer]:
typing[request.referrer].remove(v.username) typing[request.referrer].remove(v.username)