Merge pull request #1216 from SaptakS/fix-username-session

Fix username updation to both the sessions
This commit is contained in:
Micah Lee 2020-11-23 13:58:54 -08:00 committed by GitHub
commit 8a45de8241
2 changed files with 26 additions and 8 deletions

View File

@ -1,7 +1,12 @@
$(function () { $(function () {
$(document).ready(function () { $(document).ready(function () {
$('.chat-container').removeClass('no-js'); $('.chat-container').removeClass('no-js');
var socket = io.connect('http://' + document.domain + ':' + location.port + '/chat'); var socket = io.connect(
'http://' + document.domain + ':' + location.port + '/chat',
{
transports: ['websocket']
}
);
// Store current username received from app context // Store current username received from app context
var current_username = $('#username').val(); var current_username = $('#username').val();
@ -45,7 +50,8 @@ $(function () {
// Keep buttons disabled unless changed or not empty // Keep buttons disabled unless changed or not empty
$('#username').on('keyup', function (event) { $('#username').on('keyup', function (event) {
if ($('#username').val() !== '' && $('#username').val() !== current_username) { if ($('#username').val() !== '' && $('#username').val() !== current_username) {
if (event.keyCode == 13) { if (event.keyCode == 13 || event.which == 13) {
this.blur();
current_username = updateUsername(socket) || current_username; current_username = updateUsername(socket) || current_username;
} }
} }
@ -83,7 +89,6 @@ var emitMessage = function (socket) {
var updateUsername = function (socket) { var updateUsername = function (socket) {
var username = $('#username').val(); var username = $('#username').val();
if (!checkUsernameExists(username)) { if (!checkUsernameExists(username)) {
socket.emit('update_username', { username: username });
$.ajax({ $.ajax({
method: 'POST', method: 'POST',
url: `http://${document.domain}:${location.port}/update-session-username`, url: `http://${document.domain}:${location.port}/update-session-username`,
@ -92,6 +97,9 @@ var updateUsername = function (socket) {
data: JSON.stringify({ 'username': username }) data: JSON.stringify({ 'username': username })
}).done(function (response) { }).done(function (response) {
console.log(response); console.log(response);
if (response.success && response.username == username) {
socket.emit('update_username', { username: username });
}
}); });
return username; return username;
} }

View File

@ -66,7 +66,8 @@ class ChatModeWeb:
) )
session["room"] = self.web.settings.default_settings["chat"]["room"] session["room"] = self.web.settings.default_settings["chat"]["room"]
self.web.add_request( self.web.add_request(
request.path, {"id": history_id, "status_code": 200}, request.path,
{"id": history_id, "status_code": 200},
) )
self.web.add_request(self.web.REQUEST_LOAD, request.path) self.web.add_request(self.web.REQUEST_LOAD, request.path)
@ -83,14 +84,23 @@ class ChatModeWeb:
def update_session_username(): def update_session_username():
history_id = self.cur_history_id history_id = self.cur_history_id
data = request.get_json() data = request.get_json()
if data.get("username", "") not in self.connected_users: if (
data.get("username", "")
and data.get("username", "") not in self.connected_users
):
session["name"] = data.get("username", session.get("name")) session["name"] = data.get("username", session.get("name"))
self.web.add_request( self.web.add_request(
request.path, {"id": history_id, "status_code": 200}, request.path,
{"id": history_id, "status_code": 200},
) )
self.web.add_request(self.web.REQUEST_LOAD, request.path) self.web.add_request(self.web.REQUEST_LOAD, request.path)
r = make_response(jsonify(username=session.get("name"), success=True,)) r = make_response(
jsonify(
username=session.get("name"),
success=True,
)
)
return self.web.add_security_headers(r) return self.web.add_security_headers(r)
@self.web.socketio.on("joined", namespace="/chat") @self.web.socketio.on("joined", namespace="/chat")
@ -125,7 +135,7 @@ class ChatModeWeb:
"""Sent by a client when the user updates their username. """Sent by a client when the user updates their username.
The message is sent to all people in the room.""" The message is sent to all people in the room."""
current_name = session.get("name") current_name = session.get("name")
if message["username"] not in self.connected_users: if message.get("username", ""):
session["name"] = message["username"] session["name"] = message["username"]
self.connected_users[ self.connected_users[
self.connected_users.index(current_name) self.connected_users.index(current_name)