forked from cory/tildefriends
		
	Made it possible to add wiki editors.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4628 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -1,5 +1,5 @@ | ||||
| { | ||||
|   "type": "tildefriends-app", | ||||
|   "emoji": "📝", | ||||
|   "previous": "&dWRvF06sP9/nrZmGjF+px+KFPEjT6bg2/u7vENWvUyM=.sha256" | ||||
|   "previous": "&Unu5AZjyD0RF/QzPh2/u7DuU8IPuSFSjYFkmiWAWcqk=.sha256" | ||||
| } | ||||
| @@ -32,6 +32,7 @@ tfrpc.register(async function following(ids, depth) { | ||||
| }); | ||||
|  | ||||
| tfrpc.register(async function appendMessage(id, message) { | ||||
| 	print('APPENDING', message); | ||||
| 	return ssb.appendMessageWithIdentity(id, message); | ||||
| }); | ||||
|  | ||||
| @@ -123,6 +124,9 @@ async function process_message(whoami, collection, message, kind, parent) { | ||||
| 		} | ||||
| 	} else { | ||||
| 		collection[message.id] = Object.assign(content, {id: message.id}); | ||||
| 		if (!collection[message.id].editors) { | ||||
| 			collection[message.id].editors = [message.author]; | ||||
| 		} | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
|   | ||||
| @@ -7,6 +7,7 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 			ids: {type: Array}, | ||||
| 			owner_ids: {type: Array}, | ||||
| 			whoami: {type: String}, | ||||
| 			following: {type: Array}, | ||||
|  | ||||
| 			wikis: {type: Object}, | ||||
| 			wiki_docs: {type: Object}, | ||||
| @@ -14,6 +15,8 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 			wiki: {type: Object}, | ||||
| 			wiki_doc: {type: Object}, | ||||
| 			hash: {type: String}, | ||||
|  | ||||
| 			adding_editor: {type: Boolean}, | ||||
| 		}; | ||||
| 	} | ||||
|  | ||||
| @@ -21,6 +24,7 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		super(); | ||||
| 		this.ids = []; | ||||
| 		this.owner_ids = []; | ||||
| 		this.following = []; | ||||
| 		this.load(); | ||||
| 		let self = this; | ||||
| 		tfrpc.register(function hash_changed(hash) { | ||||
| @@ -33,6 +37,7 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		this.ids = await tfrpc.rpc.getIdentities(); | ||||
| 		this.owner_ids = await tfrpc.rpc.getOwnerIdentities(); | ||||
| 		this.whoami = await tfrpc.rpc.localStorageGet('collections_whoami'); | ||||
| 		this.following = Object.keys(await tfrpc.rpc.following([this.whoami], 2)).sort(); | ||||
|  | ||||
| 		await this.read_wikis(); | ||||
| 		await this.read_Wiki_docs(); | ||||
| @@ -45,8 +50,7 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		while (true) | ||||
| 		{ | ||||
| 			console.log('read_wikis', this.whoami); | ||||
| 			let following = Object.keys(await tfrpc.rpc.following([this.whoami], 2)).sort(); | ||||
| 			[max_rowid, wikis] = await tfrpc.rpc.collection(following, 'wiki', undefined, max_rowid, wikis, false); | ||||
| 			[max_rowid, wikis] = await tfrpc.rpc.collection(this.following, 'wiki', undefined, max_rowid, wikis, false); | ||||
| 			console.log('read ->', wikis); | ||||
| 			if (this.whoami !== start_whoami) { | ||||
| 				break; | ||||
| @@ -129,6 +133,7 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		this.wiki = event.detail.value; | ||||
| 		this.wiki_doc = undefined; | ||||
| 		this.wiki_docs = undefined; | ||||
| 		this.adding_editor = false; | ||||
| 		this.update_hash(); | ||||
| 		this.read_wiki_docs(); | ||||
| 	} | ||||
| @@ -148,6 +153,21 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	async on_add_editor(event) { | ||||
| 		let id = this.shadowRoot.getElementById('add_editor').value; | ||||
| 		let editors = [...this.wiki.editors]; | ||||
| 		if (editors.indexOf(id) == -1) { | ||||
| 			editors.push(id); | ||||
| 			editors.sort(); | ||||
| 		} | ||||
| 		await tfrpc.rpc.appendMessage(this.whoami, { | ||||
| 			type: 'wiki', | ||||
| 			key: this.wiki.id, | ||||
| 			editors: editors, | ||||
| 		}); | ||||
| 		this.adding_editor = false; | ||||
| 	} | ||||
|  | ||||
| 	async on_wiki_tombstone(event) { | ||||
| 		await tfrpc.rpc.appendMessage(this.whoami, { | ||||
| 			type: 'wiki', | ||||
| @@ -224,6 +244,16 @@ class TfCollectionsAppElement extends LitElement { | ||||
| 					@rename=${this.on_wiki_doc_rename} | ||||
| 					@tombstone=${this.on_wiki_doc_tombstone} | ||||
| 					@change=${this.on_wiki_doc_changed}></tf-collection>`)} | ||||
| 				<div ?hidden=${!this.wiki?.editors}> | ||||
| 					Editors: ${this.wiki?.editors} | ||||
| 					<button @click=${() => self.adding_editor = true} ?hidden=${this.wiki?.editors?.indexOf(this.whoami) == -1 || this.adding_editor}>+</button> | ||||
| 					<div ?hidden=${!this.adding_editor}> | ||||
| 						<label for="add_editor">Add Editor:</label> | ||||
| 						<input type="text" id="add_editor"></input> | ||||
| 						<button @click=${this.on_add_editor}>Add Editor</button> | ||||
| 						<button @click=${() => self.adding_editor = false}>x</button> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 			${this.wiki_doc && this.wiki_doc.parent === this.wiki?.id ? html` | ||||
| 				<tf-wiki-doc | ||||
|   | ||||
		Reference in New Issue
	
	Block a user