From f2d81744bbdf7586aa0d1e3f6da3e727ab205801 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:39:07 +0100 Subject: [PATCH] pass userId and avatar to awareness --- .../src/features/editor/extensions/extensions.ts | 2 ++ .../extensions/persistence.extension.ts | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/client/src/features/editor/extensions/extensions.ts b/apps/client/src/features/editor/extensions/extensions.ts index 7c685ac65..76a4cf88f 100644 --- a/apps/client/src/features/editor/extensions/extensions.ts +++ b/apps/client/src/features/editor/extensions/extensions.ts @@ -471,7 +471,9 @@ export const collabExtensions: CollabExtensions = (provider, user) => [ CollaborationCaret.configure({ provider, user: { + id: user.id, name: user.name, + avatarUrl: user.avatarUrl, color: randomElement(userColors), }, }), diff --git a/apps/server/src/collaboration/extensions/persistence.extension.ts b/apps/server/src/collaboration/extensions/persistence.extension.ts index 01bd6b9c5..78e1d6a88 100644 --- a/apps/server/src/collaboration/extensions/persistence.extension.ts +++ b/apps/server/src/collaboration/extensions/persistence.extension.ts @@ -224,7 +224,12 @@ export class PersistenceExtension implements Extension { } // Drop malformed awareness before it is broadcast - async beforeHandleAwareness({ states }: beforeHandleAwarenessPayload) { + async beforeHandleAwareness({ + states, + context, + }: beforeHandleAwarenessPayload) { + const user = context?.user; + for (const [clientId, state] of states) { if (!isRenderableObject(state)) { states.delete(clientId); @@ -235,6 +240,11 @@ export class PersistenceExtension implements Extension { delete state.user; } + if (state.user && user) { + state.user.id = user.id; + state.user.avatarUrl = user.avatarUrl ?? null; + } + if ( 'cursor' in state && state.cursor !== null &&