From e0b1685070dcee8c1553ee36d352d46bd13b4411 Mon Sep 17 00:00:00 2001 From: jerl Date: Wed, 29 Oct 2025 21:58:12 -0500 Subject: [PATCH] a few fixes --- client/app.js | 4 ++-- client/auth.js | 2 +- client/message.js | 32 +++++++++++++++++--------------- client/stream.js | 2 +- client/thread.js | 8 ++++---- server.js | 23 +++++++++++++++++++++++ src/events/call.js | 6 +++--- src/events/thread.js | 25 +------------------------ 8 files changed, 52 insertions(+), 50 deletions(-) diff --git a/client/app.js b/client/app.js index 67e6aa9..2968e11 100644 --- a/client/app.js +++ b/client/app.js @@ -98,7 +98,7 @@ window.makeUser = (user, url, context) => { membername.textContent = user.displayname; memberusername.textContent = `${user.name}@${url}`; memberbio.textContent = user.bio; - }}>${user.displayname}`; + }}>${user.displayname || user.id}`; span.user = user; return span; }; @@ -207,7 +207,7 @@ document.body.append(html.node`

- +

diff --git a/client/auth.js b/client/auth.js index 8595858..d62674f 100644 --- a/client/auth.js +++ b/client/auth.js @@ -114,7 +114,7 @@ your keys are stored in your browser's local storage only, so do this on a brows

- +
diff --git a/client/message.js b/client/message.js index 05e5f85..45d432a 100644 --- a/client/message.js +++ b/client/message.js @@ -44,11 +44,13 @@ function loadMessages(callback) { now.getDate() === date.getDate() && date.getTime() > now.getTime() - 24 * 60 * 60000 ? date.toLocaleTimeString() : date.toLocaleString() }`; + let author; let content = html.node`: ${message.content}`; - content.prepend(user ? window.makeUser(user, user.id.split?.('@')[1] || instance.url) + content.prepend(author = user ? window.makeUser(user, user.id.split?.('@')[1] || instance.url) : html.node`${message.user.id}`); div.prepend(content); messages.append(div); + return author; } instance.emit('get_history', { @@ -67,25 +69,25 @@ function loadMessages(callback) { let user; if (message.user.name) user = message.user; - else if (message.user.id.indexOf('@') === -1) + else if (!message.user.id.includes('@')) message.user.id = 'deleted user'; else { user = users[message.user.id]; - if (user === undefined) - try { - user = users[message.user.id] = await window.getUser(message.user.id); - } - catch (e) { - console.log(`error getting user ${message.user.id}:`, e); - users[message.user.id] = false; - } - if (user) { - user.id = message.user.id; - user.permissions = message.user.permissions; - } + if (!user) + user = users[message.user.id] = { + ...message.user, + messages: [] + }; } - addMessage(message, user); + let author = addMessage(message, user); + if (user?.messages) + user.messages.push(author); } + for (let id in users) + window.getUser(id).then(user => { + for (let author of users[id].messages) + author.replaceWith(window.makeUser(user, id.split('@')[1])); + }); } if (msg.more) document.getElementById('loadmore').classList.remove('hidden'); diff --git a/client/stream.js b/client/stream.js index 1d6eac9..3a6d69a 100644 --- a/client/stream.js +++ b/client/stream.js @@ -90,7 +90,7 @@ function loadStreams() { name: this.value }); currentThread.streamname = this.value; - }}> + }} autocomplete='off'>

${currentThread.listeners ? currentThread.listeners + ' listeners' : ''}

`); diff --git a/client/thread.js b/client/thread.js index 16e5f44..e6a53ed 100644 --- a/client/thread.js +++ b/client/thread.js @@ -219,7 +219,7 @@ function newThread(instance) {

create thread

- +

thread permissions

@@ -236,7 +236,7 @@ function newThread(instance) { event.preventDefault(); addMember(); } - }} /> + }} autocomplete='off'>

@@ -292,7 +292,7 @@ function editThread() { }}>

edit thread

- +

thread permissions

{ if (event.key === 'Enter') addMember(); - }}> + }} autocomplete='off'>

diff --git a/server.js b/server.js index 3f51f3d..8a5bc4d 100644 --- a/server.js +++ b/server.js @@ -76,6 +76,29 @@ global.celi = { await new Promise(connecting); } return instance; + }, + emitcall: async function(thread) { + let msg = { + thread: thread.id, + call: thread.call + }; + if ((await db.query( + `select * from permission + where thread = ? and type = 'everyone' and value = 'true' and permission = 'view'`, + thread.id)).rows.length) { + for (let id in celi.users) + for (let socket of celi.users[id].sockets) + socket.emit('call', msg); + } else { + for (let member of ( + await db.query('select user from member where member.thread = ?', thread.id) + ).rows) { + member = celi.users[member.user]; + if (member) + for (let socket of member.sockets) + socket.emit('call', msg); + } + } } }; diff --git a/src/events/call.js b/src/events/call.js index 94ec99d..11b8457 100644 --- a/src/events/call.js +++ b/src/events/call.js @@ -78,7 +78,7 @@ async function join(msg, respond, socket) { for (let id in call) if (id != msg.auth_user.id) connection.addTrack(call[id].track); - await thread.emitcall(); + await celi.emitcall(thread); break; case 'failed': console.log('peer connection failed'); @@ -91,7 +91,7 @@ async function join(msg, respond, socket) { } delete call[msg.auth_user.id]; delete thread.call[msg.auth_user.id]; - await thread.emitcall(); + await celi.emitcall(thread); } } }; @@ -159,7 +159,7 @@ async function leave(msg, respond) { connection.close(); delete call[msg.auth_user.id]; delete thread.call[msg.auth_user.id]; - await thread.emitcall(); + await celi.emitcall(thread); respond({ success: true }); } diff --git a/src/events/thread.js b/src/events/thread.js index 93f083d..4d64864 100644 --- a/src/events/thread.js +++ b/src/events/thread.js @@ -9,30 +9,7 @@ db.ready.then(async () => { celi.threads[thread.id] = { ...thread, streams: [], - call: {}, // list of members in call - emitcall: async function() { - let msg = { - thread: this.id, - call: this.call - }; - if ((await db.query( - `select * from permission - where thread = ? and type = 'everyone' and value = 'true' and permission = 'view'`, - this.id)).rows.length) { - for (let id in celi.users) - for (let socket of celi.users[id].sockets) - socket.emit('call', msg); - } else { - for (let member of ( - await db.query('select user from member where member.thread = ?', this.id) - ).rows) { - member = celi.users[member.user]; - if (member) - for (let socket of member.sockets) - socket.emit('call', msg); - } - } - } + call: {} // list of members in call }; celi.calls[thread.id] = {}; }