From 12d994275c0a4afa2344805e16998690a1c45a4d Mon Sep 17 00:00:00 2001 From: Hans Pagel Date: Wed, 2 Dec 2020 15:35:33 +0100 Subject: [PATCH] fix: retrieve awareness states after reconnect --- .../extension-collaboration-cursor/src/index.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/extension-collaboration-cursor/src/index.ts b/packages/extension-collaboration-cursor/src/index.ts index d44e33b0..a928b897 100644 --- a/packages/extension-collaboration-cursor/src/index.ts +++ b/packages/extension-collaboration-cursor/src/index.ts @@ -49,8 +49,8 @@ const CollaborationCursor = Extension.create({ */ user: (attributes: { [key: string]: any }): Command => () => { this.options.user = attributes + this.options.provider.awareness.setLocalStateField('user', this.options.user) - this.options.onUpdate(awarenessStatesToArray(this.options.provider.awareness.states)) return true }, @@ -66,6 +66,19 @@ const CollaborationCursor = Extension.create({ this.options.onUpdate(awarenessStatesToArray(this.options.provider.awareness.states)) }) + this.options.provider.awareness.on('update', () => { + this.options.onUpdate(awarenessStatesToArray(this.options.provider.awareness.states)) + }) + + this.options.provider.on('status', (event: { status: string }) => { + if (event.status === 'connected') { + // FIX: Reset the awareness state + // PR: https://github.com/yjs/y-protocols/issues/7 + this.options.provider.awareness.setLocalState({}) + this.options.provider.awareness.setLocalStateField('user', this.options.user) + } + }) + this.options.onUpdate(awarenessStatesToArray(this.options.provider.awareness.states)) return this.options.provider.awareness