From 5d3555b5a089df66b4591fb5dc6f43b02ef14e8f Mon Sep 17 00:00:00 2001 From: Jan Thurau Date: Fri, 29 Mar 2024 13:04:12 +0100 Subject: [PATCH] TiptapCollab: make it possible to associate a username to changes (#812) --- packages/provider/src/TiptapCollabProvider.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/provider/src/TiptapCollabProvider.ts b/packages/provider/src/TiptapCollabProvider.ts index f6946006..a7093516 100644 --- a/packages/provider/src/TiptapCollabProvider.ts +++ b/packages/provider/src/TiptapCollabProvider.ts @@ -16,7 +16,8 @@ export type TiptapCollabProviderConfiguration = Partial & (Required> | Required>| - Required>) + Required>) & + Pick export interface AdditionalTiptapCollabProviderConfiguration { /** @@ -30,11 +31,15 @@ export interface AdditionalTiptapCollabProviderConfiguration { baseUrl?: string websocketProvider?: TiptapCollabProviderWebsocket + + user?: string } export class TiptapCollabProvider extends HocuspocusProvider { tiptapCollabConfigurationPrefix = '__tiptapcollab__' + userData?: Y.PermanentUserData + constructor(configuration: TiptapCollabProviderConfiguration) { if (!configuration.websocketProvider) { configuration.websocketProvider = new TiptapCollabProviderWebsocket({ appId: (configuration as Required>).appId, baseUrl: (configuration as Required>).baseUrl }) @@ -45,6 +50,11 @@ export class TiptapCollabProvider extends HocuspocusProvider { } super(configuration as HocuspocusProviderConfiguration) + + if (configuration.user) { + this.userData = new Y.PermanentUserData(this.document, this.document.getMap('__tiptapcollab__users')) + this.userData.setUserMapping(this.document, this.document.clientID, configuration.user) + } } /**