From 632c5e4437524e83f89104e65af02fe4e60e38eb Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Mon, 20 Nov 2023 13:16:45 -0500 Subject: [PATCH] Nicknames now work. --- htdocs/lib/UI.js | 8 ++++---- owrx/client.py | 16 ++++++++++++---- owrx/connection.py | 4 +++- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/htdocs/lib/UI.js b/htdocs/lib/UI.js index 9b29a48a..72863aad 100644 --- a/htdocs/lib/UI.js +++ b/htdocs/lib/UI.js @@ -253,19 +253,19 @@ UI.setNickname = function(nickname) { } }; -UI.recvChatMessage = function(sender, text, color = 'white') { +UI.recvChatMessage = function(nickname, text, color = 'white') { // Show chat panel toggle_panel('openwebrx-panel-log', true); divlog( - '[' + sender + '[' + nickname + ']: ' + '' + text + '' ); }; -UI.sendChatMessage = function(text, sender = '') { +UI.sendChatMessage = function(text, nickname = '') { ws.send(JSON.stringify({ - 'type': 'sendmessage', 'sender': sender, 'text': text + 'type': 'sendmessage', 'name': nickname, 'text': text })); }; diff --git a/owrx/client.py b/owrx/client.py index 42d53cfc..6baea935 100644 --- a/owrx/client.py +++ b/owrx/client.py @@ -68,12 +68,20 @@ class ClientRegistry(object): client.close() # Broadcast chat message to all connected clients. - def broadcastChatMessage(self, client, text: str): + def broadcastChatMessage(self, client, text: str, name: str = None): + # Names have to be 3+ characters + if name is not None and len(name) < 1: + name = None if client in self.chat: - name = self.chat[client]["name"] - color = self.chat[client]["color"] + curname = self.chat[client]["name"] + color = self.chat[client]["color"] + if name is None or name == curname: + name = curname + else: + self.chatColors.rename(curname, name) + self.chat[client]["name"] = name else: - name = "User%04d" % (self.chatCount + 1) + name = "User%d" % (self.chatCount + 1) if name is None else name color = self.chatColors.getColor(name) self.chat[client] = { "name": name, "color": color } self.chatCount = (self.chatCount + 1) % 9999 diff --git a/owrx/connection.py b/owrx/connection.py index a0ac39f9..3d74311a 100644 --- a/owrx/connection.py +++ b/owrx/connection.py @@ -345,7 +345,9 @@ class OpenWebRxReceiverClient(OpenWebRxClient, SdrSourceEventClient): elif message["type"] == "sendmessage": if "text" in message: ClientRegistry.getSharedInstance().broadcastChatMessage( - self, message["text"] + self, + message["text"], + message["name"] if "name" in message else None ) else: