From e9d32ed333ff2121fed0a4c184e8650693819ac2 Mon Sep 17 00:00:00 2001 From: Ricardo Garim Date: Mon, 24 Jun 2024 20:34:30 -0300 Subject: [PATCH 1/2] refactor: change livechat creation related signatures --- src/definition/accessors/ILivechatCreator.ts | 2 +- src/server/accessors/LivechatCreator.ts | 2 +- src/server/bridges/LivechatBridge.ts | 4 ++-- tests/test-data/bridges/livechatBridge.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/definition/accessors/ILivechatCreator.ts b/src/definition/accessors/ILivechatCreator.ts index def2a9857..44c6a0704 100644 --- a/src/definition/accessors/ILivechatCreator.ts +++ b/src/definition/accessors/ILivechatCreator.ts @@ -21,7 +21,7 @@ export interface ILivechatCreator { * * @param visitor Data of the visitor to be created */ - createVisitor(visitor: IVisitor): Promise; + createVisitor(visitor: IVisitor): Promise; /** * Creates a token to be used when diff --git a/src/server/accessors/LivechatCreator.ts b/src/server/accessors/LivechatCreator.ts index 937827cd8..730a4f26b 100644 --- a/src/server/accessors/LivechatCreator.ts +++ b/src/server/accessors/LivechatCreator.ts @@ -12,7 +12,7 @@ export class LivechatCreator implements ILivechatCreator { return this.bridges.getLivechatBridge().doCreateRoom(visitor, agent, this.appId, extraParams); } - public createVisitor(visitor: IVisitor): Promise { + public createVisitor(visitor: IVisitor): Promise { return this.bridges.getLivechatBridge().doCreateVisitor(visitor, this.appId); } diff --git a/src/server/bridges/LivechatBridge.ts b/src/server/bridges/LivechatBridge.ts index ea9e50f1b..a510e67e9 100644 --- a/src/server/bridges/LivechatBridge.ts +++ b/src/server/bridges/LivechatBridge.ts @@ -50,7 +50,7 @@ export abstract class LivechatBridge extends BaseBridge { } } - public async doCreateVisitor(visitor: IVisitor, appId: string): Promise { + public async doCreateVisitor(visitor: IVisitor, appId: string): Promise { if (this.hasWritePermission(appId, 'livechat-visitor')) { return this.createVisitor(visitor, appId); } @@ -160,7 +160,7 @@ export abstract class LivechatBridge extends BaseBridge { protected abstract updateMessage(message: ILivechatMessage, appId: string): Promise; - protected abstract createVisitor(visitor: IVisitor, appId: string): Promise; + protected abstract createVisitor(visitor: IVisitor, appId: string): Promise; /** * @deprecated This method does not adhere to the conversion practices applied diff --git a/tests/test-data/bridges/livechatBridge.ts b/tests/test-data/bridges/livechatBridge.ts index 83eb45e13..89bcea59f 100644 --- a/tests/test-data/bridges/livechatBridge.ts +++ b/tests/test-data/bridges/livechatBridge.ts @@ -29,7 +29,7 @@ export class TestLivechatBridge extends LivechatBridge { throw new Error('Method not implemented'); } - public createVisitor(visitor: IVisitor, appId: string): Promise { + public createVisitor(visitor: IVisitor, appId: string): Promise { throw new Error('Method not implemented'); } From c8c7558285d0555c97210a4554ca4d09088d7832 Mon Sep 17 00:00:00 2001 From: Ricardo Garim Date: Tue, 25 Jun 2024 17:36:34 -0300 Subject: [PATCH 2/2] refactor: add createAndReturnVisitor method to avoid breaking changes --- src/definition/accessors/ILivechatCreator.ts | 11 ++++++++++- src/server/accessors/LivechatCreator.ts | 9 ++++++++- src/server/bridges/LivechatBridge.ts | 19 +++++++++++++++++-- tests/test-data/bridges/livechatBridge.ts | 6 +++++- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/definition/accessors/ILivechatCreator.ts b/src/definition/accessors/ILivechatCreator.ts index 44c6a0704..8524ba251 100644 --- a/src/definition/accessors/ILivechatCreator.ts +++ b/src/definition/accessors/ILivechatCreator.ts @@ -16,12 +16,21 @@ export interface ILivechatCreator { * @param agent The agent responsible for the room */ createRoom(visitor: IVisitor, agent: IUser, extraParams?: IExtraRoomParams): Promise; + + /** + * @deprecated Use `createAndReturnVisitor` instead. + * Creates a Livechat visitor + * + * @param visitor Data of the visitor to be created + */ + createVisitor(visitor: IVisitor): Promise; + /** * Creates a Livechat visitor * * @param visitor Data of the visitor to be created */ - createVisitor(visitor: IVisitor): Promise; + createAndReturnVisitor(visitor: IVisitor): Promise; /** * Creates a token to be used when diff --git a/src/server/accessors/LivechatCreator.ts b/src/server/accessors/LivechatCreator.ts index 730a4f26b..8cd527159 100644 --- a/src/server/accessors/LivechatCreator.ts +++ b/src/server/accessors/LivechatCreator.ts @@ -12,10 +12,17 @@ export class LivechatCreator implements ILivechatCreator { return this.bridges.getLivechatBridge().doCreateRoom(visitor, agent, this.appId, extraParams); } - public createVisitor(visitor: IVisitor): Promise { + /** + * @deprecated Use `createAndReturnVisitor` instead. + */ + public createVisitor(visitor: IVisitor): Promise { return this.bridges.getLivechatBridge().doCreateVisitor(visitor, this.appId); } + public createAndReturnVisitor(visitor: IVisitor): Promise { + return this.bridges.getLivechatBridge().doCreateAndReturnVisitor(visitor, this.appId); + } + public createToken(): string { return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); } diff --git a/src/server/bridges/LivechatBridge.ts b/src/server/bridges/LivechatBridge.ts index a510e67e9..9fc830767 100644 --- a/src/server/bridges/LivechatBridge.ts +++ b/src/server/bridges/LivechatBridge.ts @@ -50,12 +50,21 @@ export abstract class LivechatBridge extends BaseBridge { } } - public async doCreateVisitor(visitor: IVisitor, appId: string): Promise { + /** + * @deprecated please use the `doCreateAndReturnVisitor` method instead. + */ + public async doCreateVisitor(visitor: IVisitor, appId: string): Promise { if (this.hasWritePermission(appId, 'livechat-visitor')) { return this.createVisitor(visitor, appId); } } + public async doCreateAndReturnVisitor(visitor: IVisitor, appId: string): Promise { + if (this.hasWritePermission(appId, 'livechat-visitor')) { + return this.createAndReturnVisitor(visitor, appId); + } + } + public async doFindVisitors(query: object, appId: string): Promise> { if (this.hasReadPermission(appId, 'livechat-visitor')) { return this.findVisitors(query, appId); @@ -160,7 +169,13 @@ export abstract class LivechatBridge extends BaseBridge { protected abstract updateMessage(message: ILivechatMessage, appId: string): Promise; - protected abstract createVisitor(visitor: IVisitor, appId: string): Promise; + /** + * @deprecated please use `createAndReturnVisitor` instead. + * It returns the created record rather than the ID. + */ + protected abstract createVisitor(visitor: IVisitor, appId: string): Promise; + + protected abstract createAndReturnVisitor(visitor: IVisitor, appId: string): Promise; /** * @deprecated This method does not adhere to the conversion practices applied diff --git a/tests/test-data/bridges/livechatBridge.ts b/tests/test-data/bridges/livechatBridge.ts index 89bcea59f..27a884ea5 100644 --- a/tests/test-data/bridges/livechatBridge.ts +++ b/tests/test-data/bridges/livechatBridge.ts @@ -29,7 +29,11 @@ export class TestLivechatBridge extends LivechatBridge { throw new Error('Method not implemented'); } - public createVisitor(visitor: IVisitor, appId: string): Promise { + public createVisitor(visitor: IVisitor, appId: string): Promise { + throw new Error('Method not implemented'); + } + + public createAndReturnVisitor(visitor: IVisitor, appId: string): Promise { throw new Error('Method not implemented'); }