forked from cory/tildefriends
		
	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
This commit is contained in:
		| @@ -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`<tf-news id="news" whoami=${this.whoami} .users=${this.users} .messages=${this.messages} .following=${this.following} .drafts=${this.drafts} .expanded=${this.expanded}></tf-news>`; | ||||
| 		let more; | ||||
| 		if (!this.hash.startsWith('#@') && !this.hash.startsWith('#%')) { | ||||
| 			more = html` | ||||
| 				<input type="button" value="Load More" @click=${this.load_more}></input> | ||||
| 			`; | ||||
| 		} | ||||
| 		return html` | ||||
| 			<tf-news id="news" whoami=${this.whoami} .users=${this.users} .messages=${this.messages} .following=${this.following} .drafts=${this.drafts} .expanded=${this.expanded}></tf-news> | ||||
| 			${more} | ||||
| 		`; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -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(); | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user