From 74323c22f912dc21b537aa2038a7fece566b49c9 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Wed, 3 May 2023 22:32:21 +0000 Subject: [PATCH] I think this lets me load more pages. git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4280 ed5197a5-7fde-0310-b194-c3ffbd925b24 --- apps/ssb/tf-tab-news-feed.js | 45 ++++++++++++++++++++++++++++++++++-- apps/ssb/tf-tab-news.js | 3 +-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/apps/ssb/tf-tab-news-feed.js b/apps/ssb/tf-tab-news-feed.js index c48e147a..ce7e8dfa 100644 --- a/apps/ssb/tf-tab-news-feed.js +++ b/apps/ssb/tf-tab-news-feed.js @@ -26,6 +26,7 @@ class TfTabNewsFeedElement extends LitElement { this.following = []; this.drafts = {}; this.expanded = {}; + this.start_time = new Date().valueOf() - 24 * 60 * 60 * 1000; } async fetch_messages() { @@ -85,11 +86,42 @@ class TfTabNewsFeedElement extends LitElement { `, [ JSON.stringify(this.following), - new Date().valueOf() - 24 * 60 * 60 * 1000, + this.start_time, ]); } } + async load_more() { + let last_start_time = this.start_time; + this.start_time = last_start_time - 24 * 60 * 60 * 1000; + let more = await tfrpc.rpc.query( + ` + WITH news AS (SELECT messages.* + FROM messages + JOIN json_each(?) AS following ON messages.author = following.value + WHERE messages.timestamp > ? + AND messages.timestamp <= ? + ORDER BY messages.timestamp DESC) + SELECT messages.* + FROM news + JOIN messages_refs ON news.id = messages_refs.ref + JOIN messages ON messages_refs.message = messages.id + UNION + SELECT messages.* + FROM news + JOIN messages_refs ON news.id = messages_refs.message + JOIN messages ON messages_refs.ref = messages.id + UNION + SELECT news.* FROM news + `, + [ + JSON.stringify(this.following), + this.start_time, + last_start_time, + ]); + this.messages = [...more, ...this.messages]; + } + render() { if (!this.messages || this._messages_hash !== this.hash || @@ -106,7 +138,16 @@ class TfTabNewsFeedElement extends LitElement { alert(JSON.stringify(error, null, 2)); }); } - return html``; + let more; + if (!this.hash.startsWith('#@') && !this.hash.startsWith('#%')) { + more = html` + + `; + } + return html` + + ${more} + `; } } diff --git a/apps/ssb/tf-tab-news.js b/apps/ssb/tf-tab-news.js index e7faa96c..6f4eab78 100644 --- a/apps/ssb/tf-tab-news.js +++ b/apps/ssb/tf-tab-news.js @@ -45,7 +45,7 @@ class TfTabNewsElement extends LitElement { show_more() { let unread = this.unread; - let news = this.renderRoot?.getElementById('news'); + let news = this.shadowRoot?.getElementById('news'); if (news) { console.log('injecting messages', news.messages); news.messages = Object.values(Object.fromEntries([...this.unread, ...news.messages].map(x => [x.id, x]))); @@ -98,7 +98,6 @@ class TfTabNewsElement extends LitElement { on_keypress(event) { if (event.target === document.body && event.key == '.') { - console.log(this); this.show_more(); } }