diff --git a/files/assets/js/chat.js b/files/assets/js/chat.js
index 85748acbc..65caf554e 100644
--- a/files/assets/js/chat.js
+++ b/files/assets/js/chat.js
@@ -107,10 +107,20 @@ socket.on('speak', function(json) {
const userlink = document.getElementsByClassName('userlink')[0]
- userlink.innerHTML = userlink.innerHTML.replace(userlink.textContent, json.username)
userlink.href = '/@' + json.username
userlink.style.color = '#' + json.namecolor
+ const username = document.getElementsByClassName('username')[0]
+ username.textContent = json.username
+ if (json.patron) {
+ username.classList.add('patron')
+ username.style.backgroundColor = '#' + json.namecolor
+ }
+ else {
+ username.classList.remove('patron')
+ username.style.backgroundColor = null
+ }
+
document.getElementsByClassName('user_id')[0].value = json.user_id
if (Date.now() - json.time*1000 > 5000)
@@ -221,10 +231,14 @@ socket.on('online', function(data){
let online2 = 'Users Online'
for (const u of data[0])
{
+ let patron = ''
+ if (u[3])
+ patron = ` class="patron" style="background-color:#${u[2]}"`
+
online += `
`
if (admin_level && Object.keys(data[1]).includes(u[0].toLowerCase()))
online += 'X '
- online += `${u[0]}`
+ online += `${u[0]}`
online2 += `
@${u[0]}`
}
document.getElementById('online').innerHTML = online
diff --git a/files/routes/chat.py b/files/routes/chat.py
index 4cda46049..82e9afb6b 100644
--- a/files/routes/chat.py
+++ b/files/routes/chat.py
@@ -140,6 +140,7 @@ def speak(data, v):
"user_id": v.id,
"username": v.username,
"namecolor": v.name_color,
+ "patron": v.patron,
"text": text,
"text_censored": censor_slurs(text, 'chat'),
"text_html": text_html,
@@ -176,15 +177,15 @@ def refresh_online():
@is_not_permabanned_socketio
def connect(v):
- if any(v.id in session for session in sessions) and [v.username, v.id, v.name_color] not in online:
+ if any(v.id in session for session in sessions) and [v.username, v.id, v.name_color, v.patron] not in online:
# user has previous running sessions with a different username or name_color
for chat_user in online:
if v.id == chat_user[1]:
online.remove(chat_user)
sessions.append([v.id, request.sid])
- if [v.username, v.id, v.name_color] not in online:
- online.append([v.username, v.id, v.name_color])
+ if [v.username, v.id, v.name_color, v.patron] not in online:
+ online.append([v.username, v.id, v.name_color, v.patron])
refresh_online()
diff --git a/files/templates/util/macros.html b/files/templates/util/macros.html
index 74a95d98d..b3ea16fcd 100644
--- a/files/templates/util/macros.html
+++ b/files/templates/util/macros.html
@@ -231,7 +231,13 @@
{% macro chat_group_template(id, m) %}