From 5249aad35741f6f029c442a04d679937fb91d2bb Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Sat, 14 Sep 2024 00:16:51 -0400 Subject: Placeholder UX, probably --- js/channel.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 js/channel.js (limited to 'js') diff --git a/js/channel.js b/js/channel.js new file mode 100644 index 0000000..96d1061 --- /dev/null +++ b/js/channel.js @@ -0,0 +1,34 @@ +"use strict"; + +function ready(callback) { + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', callback); + } else { + callback(); + } +} + +ready(() => { + let template = document.querySelector('#message').content; + + document.querySelectorAll('link[rel=events]').forEach(elem => { + let url = elem.getAttribute("href"); + let source = new EventSource(url); + source.addEventListener('message', message => { + let body = JSON.parse(message.data); + + document.querySelectorAll('.messages').forEach(elem => { + let message = template.cloneNode(true); + + message.querySelectorAll('.sender') + .forEach(elem => elem.textContent = body.sender.name); + message.querySelectorAll('.message') + .forEach(elem => elem.textContent = body.body); + message.querySelectorAll('.sent_at') + .forEach(elem => elem.textContent = body.sent_at); + + message.childNodes.forEach(node => elem.appendChild(node)); + }); + }); + }); +}) -- cgit v1.2.3