ssb: More correct/thorough channel status.

This commit is contained in:
Cory McWilliams 2025-05-31 17:55:49 -04:00
parent 534438df63
commit 8a9502d1f2
2 changed files with 41 additions and 25 deletions

View File

@ -1,5 +1,5 @@
{ {
"type": "tildefriends-app", "type": "tildefriends-app",
"emoji": "🦀", "emoji": "🦀",
"previous": "&IeAWl/iQMfeYh+uyFRUqKBLQXaz+oIv7AjZNlSq28jU=.sha256" "previous": "&R6lVyXLYem8Qkuhok/USflvzqw/ZgGic1aUsE23yzR0=.sha256"
} }

View File

@ -362,6 +362,16 @@ class TfElement extends LitElement {
messages.author != ?4 messages.author != ?4
GROUP by channel GROUP by channel
UNION UNION
SELECT channels.value AS channel, MAX(messages.rowid) AS rowid FROM messages
JOIN messages_refs ON messages.id = messages_refs.message
JOIN json_each(?1) AS channels ON messages_refs.ref = '#' || channels.value
JOIN json_each(?2) AS following ON messages.author = following.value
WHERE
messages.content ->> 'type' = 'post' AND
messages.content ->> 'root' IS NULL AND
messages.author != ?4
GROUP by channel
UNION
SELECT '' AS channel, MAX(messages.rowid) AS rowid FROM messages SELECT '' AS channel, MAX(messages.rowid) AS rowid FROM messages
JOIN json_each(?2) AS following ON messages.author = following.value JOIN json_each(?2) AS following ON messages.author = following.value
WHERE WHERE
@ -381,9 +391,15 @@ class TfElement extends LitElement {
this.whoami, this.whoami,
] ]
); );
this.channels_latest = Object.fromEntries( let latest = {};
channels.map((x) => [x.channel, x.rowid]) for (let row of channels) {
); if (!latest[row.channel]) {
latest[row.channel] = row.rowid;
} else {
latest[row.channel] = Math.max(row.rowid, latest[row.channel]);
}
}
this.channels_latest = latest;
console.log('channels took', (new Date() - start_time) / 1000.0); console.log('channels took', (new Date() - start_time) / 1000.0);
let self = this; let self = this;
start_time = new Date(); start_time = new Date();