forked from cory/tildefriends
		
	Trying to work toward multiple users. List wikis of people you are following. Also hook in to the lit updated event.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4626 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| { | ||||
|   "type": "tildefriends-app", | ||||
|   "emoji": "📝", | ||||
|   "previous": "&N1wA9DJ6RacaPG52I+ZEhWbbVvf3U1Dcvouh0UkfkG0=.sha256" | ||||
|   "previous": "&YeaTOrnB4mPU2htPCtcLH9Ys1rXyyulEroR2gkU7zKw=.sha256" | ||||
| } | ||||
| @@ -127,10 +127,11 @@ async function process_message(whoami, collection, message, kind, parent) { | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| tfrpc.register(async function collection(ids, kind, parent, max_rowid, data) { | ||||
| tfrpc.register(async function collection(ids, kind, parent, max_rowid, data, include_private) { | ||||
| 	let whoami = await ssb.getIdentities(); | ||||
| 	data = data ?? {}; | ||||
| 	let rowid = 0; | ||||
| 	let first = true; | ||||
| 	await ssb.sqlAsync('SELECT MAX(rowid) AS rowid FROM messages', [], function(row) { | ||||
| 		rowid = row.rowid; | ||||
| 	}); | ||||
| @@ -140,10 +141,12 @@ tfrpc.register(async function collection(ids, kind, parent, max_rowid, data) { | ||||
| 			await ssb.sqlAsync('SELECT MAX(rowid) AS rowid FROM messages', [], function(row) { | ||||
| 				rowid = row.rowid; | ||||
| 			}); | ||||
| 			first = false; | ||||
| 		} | ||||
|  | ||||
| 		let modified = false; | ||||
| 		let rows = []; | ||||
| 		print(include_private ? true: false, ids); | ||||
| 		await ssb.sqlAsync(` | ||||
| 				SELECT messages.id, author, content, timestamp | ||||
| 				FROM messages | ||||
| @@ -153,17 +156,18 @@ tfrpc.register(async function collection(ids, kind, parent, max_rowid, data) { | ||||
| 					messages.rowid <= ?3 AND | ||||
| 					((json_extract(messages.content, '$.type') = ?4 AND | ||||
| 					(?5 IS NULL OR json_extract(messages.content, '$.parent') = ?5)) OR | ||||
| 					content LIKE '"%') | ||||
| 		`, [JSON.stringify(ids), max_rowid ?? -1, rowid, kind, parent], function(row) { | ||||
| 					(?6 AND content LIKE '"%')) | ||||
| 		`, [JSON.stringify(ids), max_rowid ?? -1, rowid, kind, parent, include_private ? true : false], function(row) { | ||||
| 			rows.push(row); | ||||
| 		}); | ||||
| 		print('done'); | ||||
| 		max_rowid = rowid; | ||||
| 		for (let row of rows) { | ||||
| 			if (await process_message(whoami, data, row, kind, parent)) { | ||||
| 				modified = true; | ||||
| 			} | ||||
| 		} | ||||
| 		if (modified) { | ||||
| 		if (first || modified) { | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
| @@ -41,10 +41,18 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 	async read_wikis() { | ||||
| 		let max_rowid; | ||||
| 		let wikis; | ||||
| 		let start_whoami = this.whoami; | ||||
| 		while (true) | ||||
| 		{ | ||||
| 			console.log('read_wikis', max_rowid); | ||||
| 			[max_rowid, wikis] = await tfrpc.rpc.collection(this.owner_ids, 'wiki', undefined, max_rowid, wikis); | ||||
| 			console.log('read_wikis', this.whoami); | ||||
| 			let following = Object.keys(await tfrpc.rpc.following([this.whoami]), 2); | ||||
| 			console.log('following', following); | ||||
| 			[max_rowid, wikis] = await tfrpc.rpc.collection(following, 'wiki', undefined, max_rowid, wikis, false); | ||||
| 			console.log('read ->', wikis); | ||||
| 			if (this.whoami !== start_whoami) { | ||||
| 				break; | ||||
| 			} | ||||
| 			console.log('wikis =>', wikis); | ||||
| 			this.wikis = wikis; | ||||
| 			this.update_wiki(); | ||||
| 		} | ||||
| @@ -59,10 +67,8 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		let wiki_docs; | ||||
| 		while (true) | ||||
| 		{ | ||||
| 			console.log('read_wiki_docs', max_rowid); | ||||
| 			[max_rowid, wiki_docs] = await tfrpc.rpc.collection(this.owner_ids, 'wiki-doc', this.wiki?.id, max_rowid, wiki_docs); | ||||
| 			if (this.wiki?.id !== start_id) { | ||||
| 				console.log('ending read_wiki_docs'); | ||||
| 				break; | ||||
| 			} | ||||
| 			this.wiki_docs = wiki_docs; | ||||
| @@ -188,6 +194,14 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		this.update_hash(); | ||||
| 	} | ||||
|  | ||||
| 	updated(changed_properties) { | ||||
| 		if (changed_properties.has('whoami')) { | ||||
| 			this.wikis = {}; | ||||
| 			this.wiki_docs = {}; | ||||
| 			this.read_wikis(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	render() { | ||||
| 		let self = this; | ||||
| 		return html` | ||||
| @@ -195,14 +209,14 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 				<tf-id-picker .ids=${this.ids} selected=${this.whoami} @change=${this.on_whoami_changed} ?hidden=${!this.ids?.length}></tf-id-picker> | ||||
| 			</div> | ||||
| 			<div> | ||||
| 				<tf-collection | ||||
| 				${keyed(this.whoami, html`<tf-collection | ||||
| 					.collection=${this.wikis} | ||||
| 					whoami=${this.whoami} | ||||
| 					selected_id=${this.wiki?.id} | ||||
| 					@create=${this.on_wiki_create} | ||||
| 					@rename=${this.on_wiki_rename} | ||||
| 					@tombstone=${this.on_wiki_tombstone} | ||||
| 					@change=${this.on_wiki_changed}></tf-collection> | ||||
| 					@change=${this.on_wiki_changed}></tf-collection>`)} | ||||
| 				${keyed(this.wiki_doc?.id, html`<tf-collection | ||||
| 					.collection=${this.wiki_docs} | ||||
| 					whoami=${this.whoami} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user