From e6875378136fabbe937048bdb9f27e77963c4abe Mon Sep 17 00:00:00 2001 From: Aevann Date: Wed, 4 Oct 2023 22:53:54 +0300 Subject: [PATCH] Revert "stop online and typing from hanging" This reverts commit 57b60e9128caf823524836306da55b4a407f2a9a. --- files/assets/js/chat.js | 25 ++++++++----------------- files/routes/chat.py | 39 ++++++++++++++------------------------- 2 files changed, 22 insertions(+), 42 deletions(-) diff --git a/files/assets/js/chat.js b/files/assets/js/chat.js index 8b2835197d..266e0554ae 100644 --- a/files/assets/js/chat.js +++ b/files/assets/js/chat.js @@ -186,25 +186,22 @@ ta.addEventListener("keydown", function(e) { }) socket.on('online', function(data){ - const online_li = Object.entries(data[0]) - const muted_li = Object.keys(data[1]) - - document.getElementsByClassName('board-chat-count')[0].innerHTML = online_li.length - document.getElementById('chat-count-header-bar').innerHTML = online_li.length + document.getElementsByClassName('board-chat-count')[0].innerHTML = data[0].length + document.getElementById('chat-count-header-bar').innerHTML = data[0].length const admin_level = parseInt(document.getElementById('admin_level').value) let online = '' let online2 = 'Users Online' - for (const [k, val] of online_li) + for (const u of data[0]) { let patron = '' - if (val[3]) - patron = ` class="patron" style="background-color:#${val[2]}"` + if (u[3]) + patron = ` class="patron" style="background-color:#${u[2]}"` online += `
  • ` - if (admin_level && muted_li.includes(val[1].toLowerCase())) + if (admin_level && Object.keys(data[1]).includes(u[1].toLowerCase())) online += 'X ' - online += `${val[1]}
  • ` - online2 += `
    @${val[1]}` + online += `${u[1]}` + online2 += `
    @${u[1]}` } const online_el = document.getElementById('online') @@ -314,12 +311,6 @@ document.onpaste = function(event) { handle_files() } -function send_hearbeat() { - socket.emit('heartbeat') -} -send_hearbeat() -setInterval(send_hearbeat, 3600000); - box.scrollTo(0, box.scrollHeight) setTimeout(function () { box.scrollTo(0, box.scrollHeight) diff --git a/files/routes/chat.py b/files/routes/chat.py index 6e722a9e33..71ad6d0742 100644 --- a/files/routes/chat.py +++ b/files/routes/chat.py @@ -39,7 +39,7 @@ typing = { f'{SITE_FULL}/chat': [], } online = { - f'{SITE_FULL}/chat': {}, + f'{SITE_FULL}/chat': [], } cache.set('loggedin_chat', len(online[f'{SITE_FULL}/chat']), timeout=0) @@ -194,16 +194,14 @@ def speak(data, v): return '', 204 def refresh_online(): - for li in online.values(): - for entry in li.values(): - if time.time() > entry[0]: - del li[entry] - if entry[1] in typing[g.referrer]: - typing[g.referrer].remove(entry[1]) - emit("online", [online[g.referrer], muted], room=g.referrer, broadcast=True) cache.set('loggedin_chat', len(online[f'{SITE_FULL}/chat']), timeout=0) +def remove_from_online(v): + for li in online.values(): + for entry in li: + if entry[0] == v.id: + li.remove(entry) @socketio.on('connect') @auth_required_socketio @@ -217,19 +215,20 @@ def connect(v): join_room(g.referrer) + remove_from_online(v) + + online[g.referrer].append([v.id, v.username, v.name_color, v.patron]) + + refresh_online() + emit('typing', typing[g.referrer], room=g.referrer) return '', 204 - - @socketio.on('disconnect') @auth_required_socketio def disconnect(v): - for dictionary in online.values(): - dictionary.pop(v.id, None) - - if v.username in typing[g.referrer]: - typing[g.referrer].remove(v.username) + if g.referrer != f'{SITE_FULL}/notifications/messages': + remove_from_online(v) if g.referrer not in ALLOWED_REFERRERS: return '', 400 @@ -241,16 +240,6 @@ def disconnect(v): return '', 204 -@socketio.on('heartbeat') -@auth_required_socketio -def heartbeat(v): - if g.referrer not in ALLOWED_REFERRERS: - return '', 400 - expire_utc = int(time.time()) + 3610 - online[g.referrer][v.id] = (expire_utc, v.username, v.name_color, v.patron) - refresh_online() - return '', 204 - @socketio.on('typing') @is_not_banned_socketio def typing_indicator(data, v):