From 86035b8b00b9f19a09ca5f2e6f82c39494ada5af Mon Sep 17 00:00:00 2001 From: Paik Date: Wed, 28 Aug 2024 09:19:20 +0900 Subject: [PATCH] Refactor by removing unnecessary broadcastEventHanlders --- packages/sdk/src/document/document.ts | 32 +++----------------- packages/sdk/test/integration/client_test.ts | 16 +++++----- 2 files changed, 12 insertions(+), 36 deletions(-) diff --git a/packages/sdk/src/document/document.ts b/packages/sdk/src/document/document.ts index 1fcf8842b..d4b637f3d 100644 --- a/packages/sdk/src/document/document.ts +++ b/packages/sdk/src/document/document.ts @@ -400,7 +400,7 @@ type DocEventCallbackMap

= { connection: NextFn; status: NextFn; sync: NextFn; - broadcast: (topic: string, payload: any) => void; + broadcast: (payload: any) => void; all: NextFn>; }; export type DocEventTopic = keyof DocEventCallbackMap; @@ -617,15 +617,6 @@ export class Document { */ private isUpdating: boolean; - /** - * `broadcastEventHandlers` is a map of broadcast event handlers. - * The key is the topic of the broadcast event, and the value is the handler. - */ - private broadcastEventHandlers: Map< - string, - DocEventCallbackMap

['broadcast'] - >; - private client?: Client; constructor(key: string, opts?: DocumentOptions) { @@ -655,8 +646,6 @@ export class Document { redo: this.redo.bind(this), }; - this.broadcastEventHandlers = new Map(); - setupDevtools(this); } @@ -1085,23 +1074,18 @@ export class Document { const { topic } = arg1 as BroadcastSubscribePair; const handler = arg2 as DocEventCallbackMap

['broadcast']; const error = arg3 as ErrorFn; - this.broadcastEventHandlers.set(topic, handler); - const unsubscribe = this.eventStream.subscribe((event) => { + + return this.eventStream.subscribe((event) => { for (const docEvent of event) { if (docEvent.type !== DocEventType.Broadcast) { continue; } if (docEvent.value.topic === topic) { - handler(topic, docEvent.value.payload); + handler(docEvent.value.payload); } } }, error); - - return () => { - unsubscribe(); - this.broadcastEventHandlers.delete(topic); - }; } } throw new YorkieError(Code.ErrInvalidArgument, `"${arg1}" is not a valid`); @@ -1684,14 +1668,6 @@ export class Document { const { clientID, presence } = event.value; this.presences.set(clientID, presence); } - - if (event.type === DocEventType.Broadcast) { - const { topic, payload } = event.value; - const handler = this.broadcastEventHandlers.get(topic); - if (handler) { - handler(topic, payload); - } - } } /** diff --git a/packages/sdk/test/integration/client_test.ts b/packages/sdk/test/integration/client_test.ts index 59f4a3000..e6c991998 100644 --- a/packages/sdk/test/integration/client_test.ts +++ b/packages/sdk/test/integration/client_test.ts @@ -907,18 +907,18 @@ it('Should trigger the handler for a subscribed broadcast event', async ({ }) => { await withTwoClientsAndDocuments<{ t: Text }>( async (c1, d1, c2, d2) => { - const eventCollector = new EventCollector<[string, any]>(); + const eventCollector = new EventCollector<[any]>(); const broadcastTopic = 'test'; const unsubscribe = d2.subscribe( { type: 'broadcast', topic: broadcastTopic }, - (topic, payload) => { - eventCollector.add([topic, payload]); + (payload) => { + eventCollector.add([payload]); }, ); const payload = { a: 1, b: '2' }; await d1.broadcast(broadcastTopic, payload); - await eventCollector.waitAndVerifyNthEvent(1, [broadcastTopic, payload]); + await eventCollector.waitAndVerifyNthEvent(1, [payload]); unsubscribe(); }, @@ -964,19 +964,19 @@ it('Should not trigger the handler for a broadcast event after unsubscribing', a async (c1, d1, c2, d2) => { const spy = vi.fn(); - const eventCollector = new EventCollector<[string, any]>(); + const eventCollector = new EventCollector<[any]>(); const broadcastTopic = 'test'; const unsubscribe = d2.subscribe( { type: 'broadcast', topic: broadcastTopic }, - (topic, payload) => { + (payload) => { spy(); - eventCollector.add([topic, payload]); + eventCollector.add([payload]); }, ); const payload = { a: 1, b: '2' }; await d1.broadcast(broadcastTopic, payload); - await eventCollector.waitAndVerifyNthEvent(1, [broadcastTopic, payload]); + await eventCollector.waitAndVerifyNthEvent(1, [payload]); unsubscribe();