From 93409f809563b7b7f5c396f7cb3940e466c0966e Mon Sep 17 00:00:00 2001 From: n9k Date: Tue, 22 Feb 2022 05:27:42 +0000 Subject: [PATCH] Message dates and times in chat Now using `get_message_for_websocket` when sending an individual message. --- anonstream/chat.py | 9 ++++----- anonstream/static/anonstream.js | 16 ++++++++++++---- anonstream/static/style.css | 5 +++++ anonstream/templates/nojs_chat.html | 7 ++++++- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/anonstream/chat.py b/anonstream/chat.py index f519a6b..ea8e36a 100644 --- a/anonstream/chat.py +++ b/anonstream/chat.py @@ -53,7 +53,7 @@ def add_chat_message(user, nonce, comment, ignore_empty=False): seq = last_message['seq'] + 1 dt = datetime.utcfromtimestamp(timestamp) markup = escape(comment) - MESSAGES_BY_ID[message_id] = { + message = { 'id': message_id, 'seq': seq, 'token': user['token'], @@ -64,6 +64,7 @@ def add_chat_message(user, nonce, comment, ignore_empty=False): 'nomarkup': comment, 'markup': markup, } + MESSAGES_BY_ID[message_id] = message while len(MESSAGES_BY_ID) > CONFIG['MAX_CHAT_MESSAGES']: MESSAGES_BY_ID.pop(last=False) @@ -76,10 +77,8 @@ def add_chat_message(user, nonce, comment, ignore_empty=False): broadcast( USERS, payload={ - 'type': 'chat', - 'seq': seq, - 'token_hash': user['token_hash'], - 'markup': markup, + 'type': 'message', + 'message': get_message_for_websocket(user, message), }, ) diff --git a/anonstream/static/anonstream.js b/anonstream/static/anonstream.js index 6e547cc..f08806d 100644 --- a/anonstream/static/anonstream.js +++ b/anonstream/static/anonstream.js @@ -70,6 +70,12 @@ const create_chat_message = (object) => { chat_message.dataset.seq = object.seq; chat_message.dataset.tokenHash = object.token_hash; + const chat_message_time = document.createElement("time"); + chat_message_time.classList.add("chat-message__time"); + chat_message_time.dateTime = `${object.date}T${object.time_seconds}Z`; + chat_message_time.title = `${object.date} ${object.time_seconds}`; + chat_message_time.innerText = object.time_minutes; + const chat_message_name = document.createElement("span"); chat_message_name.classList.add("chat-message__name"); chat_message_name.innerText = get_user_name({user}); @@ -90,6 +96,8 @@ const create_chat_message = (object) => { chat_message_markup.classList.add("chat-message__markup"); chat_message_markup.innerHTML = object.markup; + chat_message.insertAdjacentElement("beforeend", chat_message_time); + chat_message.insertAdjacentHTML("beforeend", " "); chat_message.insertAdjacentElement("beforeend", chat_message_name); chat_message.insertAdjacentElement("beforeend", chat_message_tripcode_nbsp); chat_message.insertAdjacentElement("beforeend", chat_message_tripcode); @@ -292,7 +300,7 @@ const disable_captcha = () => { } const on_websocket_message = (event) => { - console.log("websocket message", event); + //console.log("websocket message", event); const receipt = JSON.parse(event.data); switch (receipt.type) { case "error": @@ -354,9 +362,9 @@ const on_websocket_message = (event) => { chat_form_submit.disabled = false; break; - case "chat": - console.log("ws chat", receipt); - create_and_add_chat_message(receipt); + case "message": + console.log("ws message", receipt); + create_and_add_chat_message(receipt.message); chat_messages.scrollTo({ left: 0, top: chat_messages.scrollTopMax, diff --git a/anonstream/static/style.css b/anonstream/static/style.css index bc716b6..7d2125c 100644 --- a/anonstream/static/style.css +++ b/anonstream/static/style.css @@ -114,6 +114,11 @@ noscript { .chat-message:hover { background-color: #434347; } +.chat-message__time { + color: #b2b2b3; + font-size: 10pt; + cursor: help; +} .chat-message__name { overflow-wrap: anywhere; font-weight: bold; diff --git a/anonstream/templates/nojs_chat.html b/anonstream/templates/nojs_chat.html index 9e8a279..e3ec7f8 100644 --- a/anonstream/templates/nojs_chat.html +++ b/anonstream/templates/nojs_chat.html @@ -94,6 +94,11 @@ .chat-message:hover { background-color: #434347; } + .chat-message__time { + color: #b2b2b3; + font-size: 10pt; + cursor: help; + } .chat-message__name { overflow-wrap: anywhere; font-weight: bold; @@ -126,7 +131,7 @@ {% for message in messages | reverse %}
  • {% with user = users_by_token[message.token] %} - {{ user.name or get_default_name(user) }}{% if user.tripcode != none %} {{ user.tripcode.digest }}{% endif %}: {{ message.markup }} +  {{ user.name or get_default_name(user) }}{% if user.tripcode %} {{ user.tripcode.digest }}{% endif %}: {{ message.markup }} {% endwith %}
  • {% endfor %}