diff --git a/files/assets/js/chat.js b/files/assets/js/chat.js index de784e728..69d5afa3c 100644 --- a/files/assets/js/chat.js +++ b/files/assets/js/chat.js @@ -146,6 +146,8 @@ socket.on('speak', function(json) { socket.on('catchup', function(json) { for (const message of json) { + const existing = document.getElementById(json['id']) + if (existing) break handle_message(message) } }) diff --git a/files/routes/chat.py b/files/routes/chat.py index 035c10806..0fa074602 100644 --- a/files/routes/chat.py +++ b/files/routes/chat.py @@ -133,12 +133,14 @@ def refresh_online(): @limiter.limit(DEFAULT_RATELIMIT, key_func=get_ID) @admin_level_required(PERMS['CHAT']) def connect(v): + join_room(request.referrer) + if v.username not in online[request.referrer]: - join_room(request.referrer) online[request.referrer].append(v.username) refresh_online() - emit('catchup', messages[request.referrer], room=request.referrer) - emit('typing', typing[request.referrer], room=request.referrer) + + emit('catchup', messages[request.referrer], room=request.referrer) + emit('typing', typing[request.referrer], room=request.referrer) return '', 204 @socketio.on('disconnect')