diff --git a/apps/ssb/tf-tab-news-feed.js b/apps/ssb/tf-tab-news-feed.js
index c48e147a2..ce7e8dfa5 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 e7faa96cf..6f4eab783 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();
}
}