Fix a death spiral.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4612 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
Cory McWilliams 2023-11-05 23:25:55 +00:00
parent 280dee0438
commit dfe5d51d04
4 changed files with 25 additions and 36 deletions

View File

@ -1,5 +1,5 @@
{
"type": "tildefriends-app",
"emoji": "📝",
"previous": "&5DCHb4dlFnAlInCiIb1v7XG+w/t11fVwbpqM8aVLEfQ=.sha256"
"previous": "&263ro6L8r7tRcrC7LjvY59gC72DlEM/nehd6s7S08sQ=.sha256"
}

View File

@ -153,6 +153,7 @@ tfrpc.register(async function collection(ids, kind, parent, max_rowid, data) {
`, [JSON.stringify(ids), max_rowid ?? -1, rowid, kind, parent], function(row) {
rows.push(row);
});
max_rowid = rowid;
for (let row of rows) {
if (await process_message(whoami, data, row, kind, parent)) {
modified = true;

View File

@ -43,6 +43,7 @@ class TfCollectionsAppElement extends LitElement {
let wikis;
while (true)
{
console.log('read_wikis', max_rowid);
[max_rowid, wikis] = await tfrpc.rpc.collection(this.owner_ids, 'wiki', undefined, max_rowid, wikis);
this.wikis = wikis;
this.update_wiki();
@ -58,8 +59,10 @@ 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;
@ -130,23 +133,6 @@ class TfCollectionsAppElement extends LitElement {
this.update_hash();
}
async on_wiki_publish(event) {
let blob_id = event.detail.id;
let message = {
type: 'wiki-doc',
key: this.wiki_doc.id,
parent: this.wiki_doc.parent,
blob: blob_id,
};
if (event.detail.draft) {
message.recps = this.wiki_doc.editors;
print(message);
message = await tfrpc.rpc.encrypt(this.whoami, this.wiki_doc.editors, JSON.stringify(message));
}
print(message);
await tfrpc.rpc.appendMessage(this.whoami, message);
}
render() {
let self = this;
return html`
@ -166,8 +152,7 @@ class TfCollectionsAppElement extends LitElement {
${this.wiki_doc && this.wiki_doc.parent === this.wiki?.id ? html`
<tf-wiki-doc
whoami=${this.whoami}
.value=${this.wiki_doc}
@publish=${this.on_wiki_publish}></tf-wiki-doc>
.value=${this.wiki_doc}></tf-wiki-doc>
` : undefined}
`;
}

View File

@ -38,27 +38,30 @@ class TfWikiDocElement extends LitElement {
this.is_editing = false;
}
async on_save_draft() {
async append_message(draft) {
let id = await tfrpc.rpc.store_blob(this.blob);
this.dispatchEvent(new CustomEvent('publish', {
bubbles: true,
detail: {
id: id,
draft: true,
},
}));
let message = {
type: 'wiki-doc',
key: this.value.id,
parent: this.value.parent,
blob: id,
};
if (draft) {
message.recps = this.value.editors;
print(message);
message = await tfrpc.rpc.encrypt(this.whoami, this.value.editors, JSON.stringify(message));
}
print(message);
await tfrpc.rpc.appendMessage(this.whoami, message);
this.is_editing = false;
}
async on_save_draft() {
return this.append_message(true);
}
async on_publish() {
let id = await tfrpc.rpc.store_blob(this.blob);
this.dispatchEvent(new CustomEvent('publish', {
bubbles: true,
detail: {
id: id,
},
}));
this.is_editing = false;
return this.append_message(false);
}
render() {