Make the issues app use the global id picker, fix jsonb issues, and fix the global id picker.
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| { | ||||
| 	"type": "tildefriends-app", | ||||
| 	"emoji": "🦟", | ||||
| 	"previous": "&TegdzvFE+im94shygaHkgDYSaSrwY2h0OKUXSRPBQDM=.sha256" | ||||
| 	"previous": "&cUqvSDUls3jn0haD85LPFAGdkc8wFuy347TtATNcJgg=.sha256" | ||||
| } | ||||
|   | ||||
| @@ -85,6 +85,9 @@ tfrpc.register(async function store_message(message) { | ||||
| tfrpc.register(function apps() { | ||||
| 	return core.apps(); | ||||
| }); | ||||
| tfrpc.register(function getActiveIdentity() { | ||||
| 	return ssb.getActiveIdentity(); | ||||
| }); | ||||
| tfrpc.register(async function try_decrypt(id, content) { | ||||
| 	return await ssb.privateMessageDecrypt(id, content); | ||||
| }); | ||||
|   | ||||
| @@ -4,48 +4,6 @@ import * as tfutils from './tf-utils.js'; | ||||
|  | ||||
| const k_project = '%Hr+4xEVtjplidSKBlRWi4Aw/0Tfw7B+1OR9BzlDKmOI=.sha256'; | ||||
|  | ||||
| class TfIdPickerElement extends LitElement { | ||||
| 	static get properties() { | ||||
| 		return { | ||||
| 			ids: {type: Array}, | ||||
| 			selected: {type: String}, | ||||
| 		}; | ||||
| 	} | ||||
|  | ||||
| 	constructor() { | ||||
| 		super(); | ||||
| 		this.load(); | ||||
| 	} | ||||
|  | ||||
| 	async load() { | ||||
| 		this.selected = await tfrpc.rpc.localStorageGet('whoami'); | ||||
| 		this.ids = (await tfrpc.rpc.getIdentities()) || []; | ||||
| 	} | ||||
|  | ||||
| 	changed(event) { | ||||
| 		this.selected = event.srcElement.value; | ||||
| 		tfrpc.rpc.localStorageSet('whoami', this.selected); | ||||
| 	} | ||||
|  | ||||
| 	render() { | ||||
| 		if (this.ids) { | ||||
| 			return html` | ||||
| 				<select @change=${this.changed} style="max-width: 100%"> | ||||
| 					${this.ids.map( | ||||
| 						(id) => | ||||
| 							html`<option ?selected=${id == this.selected} value=${id}> | ||||
| 								${id} | ||||
| 							</option>` | ||||
| 					)} | ||||
| 				</select> | ||||
| 			`; | ||||
| 		} else { | ||||
| 			return html`<div>Loading...</div>`; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| customElements.define('tf-id-picker', TfIdPickerElement); | ||||
|  | ||||
| class TfComposeElement extends LitElement { | ||||
| 	static get properties() { | ||||
| 		return { | ||||
| @@ -105,10 +63,10 @@ class TfIssuesAppElement extends LitElement { | ||||
| 		let issues = {}; | ||||
| 		let messages = await tfrpc.rpc.query( | ||||
| 			` | ||||
| 			WITH issues AS (SELECT messages.* FROM messages_refs JOIN messages ON | ||||
| 			WITH issues AS (SELECT messages.id, json(messages.content) AS content, messages.author, messages.timestamp FROM messages_refs JOIN messages ON | ||||
| 				messages.id = messages_refs.message | ||||
| 				WHERE messages_refs.ref = ? AND json_extract(messages.content, '$.type') = 'issue'), | ||||
| 			edits AS (SELECT messages.* FROM issues JOIN messages_refs ON | ||||
| 			edits AS (SELECT messages.id, json(messages.content) AS content, messages.author, messages.timestamp FROM issues JOIN messages_refs ON | ||||
| 				issues.id = messages_refs.ref JOIN messages ON | ||||
| 				messages.id = messages_refs.message | ||||
| 				WHERE json_extract(messages.content, '$.type') IN ('issue-edit', 'post')) | ||||
| @@ -206,7 +164,7 @@ class TfIssuesAppElement extends LitElement { | ||||
| 		if ( | ||||
| 			confirm(`Are you sure you want to ${open ? 'open' : 'close'} this issue?`) | ||||
| 		) { | ||||
| 			let whoami = this.shadowRoot.getElementById('picker').selected; | ||||
| 			let whoami = await tfrpc.rpc.getActiveIdentity(); | ||||
| 			await tfrpc.rpc.appendMessage(whoami, { | ||||
| 				type: 'issue-edit', | ||||
| 				issues: [ | ||||
| @@ -221,7 +179,7 @@ class TfIssuesAppElement extends LitElement { | ||||
| 	} | ||||
|  | ||||
| 	async create_issue(event) { | ||||
| 		let whoami = this.shadowRoot.getElementById('picker').selected; | ||||
| 		let whoami = await tfrpc.rpc.getActiveIdentity(); | ||||
| 		await tfrpc.rpc.appendMessage(whoami, { | ||||
| 			type: 'issue', | ||||
| 			project: k_project, | ||||
| @@ -231,7 +189,7 @@ class TfIssuesAppElement extends LitElement { | ||||
| 	} | ||||
|  | ||||
| 	async reply_to_issue(event) { | ||||
| 		let whoami = this.shadowRoot.getElementById('picker').selected; | ||||
| 		let whoami = await tfrpc.rpc.getActiveIdentity(); | ||||
| 		await tfrpc.rpc.appendMessage(whoami, { | ||||
| 			type: 'post', | ||||
| 			text: event.detail.value, | ||||
| @@ -251,7 +209,6 @@ class TfIssuesAppElement extends LitElement { | ||||
| 	render() { | ||||
| 		let header = html` | ||||
| 			<h1>Tilde Friends Issues</h1> | ||||
| 			<tf-id-picker id="picker"></tf-id-picker> | ||||
| 		`; | ||||
| 		if (this.selected) { | ||||
| 			return html` | ||||
|   | ||||
		Reference in New Issue
	
	Block a user