From 136b9cb7e91d21a1150cd6a41cde8d2ce21ac8d8 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Fri, 3 Nov 2023 14:23:07 +0700 Subject: [PATCH] UBER-1150 Expose collaborative provider loaded state (#3934) Signed-off-by: Alexander Onnikov --- .../text-editor/src/components/CollaboratorEditor.svelte | 9 +-------- packages/text-editor/src/provider.ts | 6 ++++++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/text-editor/src/components/CollaboratorEditor.svelte b/packages/text-editor/src/components/CollaboratorEditor.svelte index 14d7614ff1..e95628b21e 100644 --- a/packages/text-editor/src/components/CollaboratorEditor.svelte +++ b/packages/text-editor/src/components/CollaboratorEditor.svelte @@ -96,14 +96,7 @@ }) let loading = true - - if (contextProvider === undefined) { - provider?.on('synced', () => { - loading = false - }) - } else { - loading = false - } + provider.loaded.then(() => (loading = false)) const currentUser = getCurrentAccount() diff --git a/packages/text-editor/src/provider.ts b/packages/text-editor/src/provider.ts index 24ec65c202..0196484198 100644 --- a/packages/text-editor/src/provider.ts +++ b/packages/text-editor/src/provider.ts @@ -19,8 +19,14 @@ export type TiptapCollabProviderConfiguration = HocuspocusProviderConfiguration Required> export class TiptapCollabProvider extends HocuspocusProvider { + loaded: Promise + constructor (configuration: TiptapCollabProviderConfiguration) { super(configuration as HocuspocusProviderConfiguration) + + this.loaded = new Promise((resolve) => { + this.on('synced', resolve) + }) } copyContent (sourceId: string, targetId: string): void {