From e8b9a1b6503f62f455314b342520ecb6702e8143 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Mon, 22 May 2023 23:10:05 -0400 Subject: [PATCH] fix: AwarenessChangeEvent type --- app/scenes/Document/components/MultiplayerEditor.tsx | 12 +++++------- app/stores/DocumentPresenceStore.ts | 6 ++++-- app/types.ts | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/scenes/Document/components/MultiplayerEditor.tsx b/app/scenes/Document/components/MultiplayerEditor.tsx index 91591daa5..342756781 100644 --- a/app/scenes/Document/components/MultiplayerEditor.tsx +++ b/app/scenes/Document/components/MultiplayerEditor.tsx @@ -107,13 +107,11 @@ function MultiplayerEditor({ onSynced, ...props }: Props, ref: any) { presence.updateFromAwarenessChangeEvent(documentId, event); event.states.forEach(({ user, scrollY }) => { - if (user) { - if (scrollY !== undefined && user.id === ui.observingUserId) { - window.scrollTo({ - top: scrollY * window.innerHeight, - behavior: "smooth", - }); - } + if (scrollY !== undefined && user?.id === ui.observingUserId) { + window.scrollTo({ + top: scrollY * window.innerHeight, + behavior: "smooth", + }); } }); }); diff --git a/app/stores/DocumentPresenceStore.ts b/app/stores/DocumentPresenceStore.ts index 8e18e32f7..941fbd111 100644 --- a/app/stores/DocumentPresenceStore.ts +++ b/app/stores/DocumentPresenceStore.ts @@ -38,8 +38,10 @@ export default class PresenceStore { event.states.forEach((state) => { const { user, cursor } = state; - this.update(documentId, user.id, !!cursor); - existingUserIds = existingUserIds.filter((id) => id !== user.id); + if (user) { + this.update(documentId, user.id, !!cursor); + existingUserIds = existingUserIds.filter((id) => id !== user.id); + } }); existingUserIds.forEach((userId) => { diff --git a/app/types.ts b/app/types.ts index b134a8471..8f617a2da 100644 --- a/app/types.ts +++ b/app/types.ts @@ -204,5 +204,5 @@ export type WebsocketEvent = | WebsocketEntitiesEvent; export type AwarenessChangeEvent = { - states: { user: { id: string }; cursor: any; scrollY: number | undefined }[]; + states: { user?: { id: string }; cursor: any; scrollY: number | undefined }[]; };