From 5ddcaf4051e62d6c73afa1f92a5bb5b55239e458 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov <Alexander.Onnikov@gmail.com> Date: Thu, 28 Dec 2023 10:33:44 +0700 Subject: [PATCH] UBERF-4777 Fix redundant updates from collaborator (#4280) Signed-off-by: Alexander Onnikov <alexander.onnikov@xored.com> --- .../src/components/CollaborativeTextEditor.svelte | 12 ++++++++++-- server/collaborator/src/extensions/storage.ts | 9 ++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/text-editor/src/components/CollaborativeTextEditor.svelte b/packages/text-editor/src/components/CollaborativeTextEditor.svelte index 0dba1ea1fb..9b40e1847e 100644 --- a/packages/text-editor/src/components/CollaborativeTextEditor.svelte +++ b/packages/text-editor/src/components/CollaborativeTextEditor.svelte @@ -314,7 +314,11 @@ </div> {/if} - <div class="text-editor-toolbar buttons-group xsmall-gap mb-4" bind:this={textToolbarElement}> + <div + class="text-editor-toolbar buttons-group xsmall-gap mb-4" + bind:this={textToolbarElement} + style="visibility: hidden;" + > {#if showTextStyleToolbar} <TextEditorStyleToolbar textEditor={editor} @@ -326,7 +330,11 @@ {/if} </div> - <div class="text-editor-toolbar buttons-group xsmall-gap mb-4" bind:this={imageToolbarElement}> + <div + class="text-editor-toolbar buttons-group xsmall-gap mb-4" + bind:this={imageToolbarElement} + style="visibility: hidden;" + > <ImageStyleToolbar textEditor={editor} formatButtonSize={buttonSize} on:focus={handleFocus} /> </div> diff --git a/server/collaborator/src/extensions/storage.ts b/server/collaborator/src/extensions/storage.ts index 0f61aad03e..9d6c542921 100644 --- a/server/collaborator/src/extensions/storage.ts +++ b/server/collaborator/src/extensions/storage.ts @@ -54,13 +54,14 @@ export class StorageExtension implements Extension { async onStoreDocument ({ context, documentName, document }: withContext<onStoreDocumentPayload>): Promise<void> { const collaborators = this.collaborators.get(documentName) + if (collaborators === undefined || collaborators.size === 0) { console.log('no changes for document', documentName) return } + this.collaborators.delete(documentName) await this.configuration.ctx.with('store-document', {}, async () => { - this.collaborators.delete(documentName) await this.storeDocument(documentName, document, context) }) } @@ -68,12 +69,14 @@ export class StorageExtension implements Extension { async onDisconnect ({ context, documentName, document }: withContext<onDisconnectPayload>): Promise<any> { const { connectionId } = context const collaborators = this.collaborators.get(documentName) - if (collaborators === undefined || !this.collaborators.has(connectionId)) { + + if (collaborators === undefined || !collaborators.has(connectionId)) { console.log('no changes for document', documentName) + return } + this.collaborators.delete(documentName) await this.configuration.ctx.with('store-document', {}, async () => { - this.collaborators.get(documentName)?.delete(connectionId) await this.storeDocument(documentName, document, context) }) }