From 30178f502fa6effbf68b4b256c52313632400b62 Mon Sep 17 00:00:00 2001 From: tipusinghaw <126460794+tipusinghaw@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:21:15 +0530 Subject: [PATCH] feat: reuse connection usinginvitation DID (#940) Signed-off-by: tipusinghaw Signed-off-by: KulkarniShashank --- .../src/connection/dtos/connection.dto.ts | 4 +++ apps/connection/src/connection.repository.ts | 17 ++++++++++++ apps/connection/src/connection.service.ts | 27 ++++++++++++++++--- .../src/interfaces/connection.interfaces.ts | 1 + 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/apps/api-gateway/src/connection/dtos/connection.dto.ts b/apps/api-gateway/src/connection/dtos/connection.dto.ts index c434c557a..896c201dd 100644 --- a/apps/api-gateway/src/connection/dtos/connection.dto.ts +++ b/apps/api-gateway/src/connection/dtos/connection.dto.ts @@ -41,6 +41,10 @@ export class CreateOutOfBandConnectionInvitation { @ApiPropertyOptional() @IsOptional() multiUseInvitation?: boolean; + + @ApiPropertyOptional() + @IsOptional() + IsReuseConnection?: boolean; @ApiPropertyOptional() @IsOptional() diff --git a/apps/connection/src/connection.repository.ts b/apps/connection/src/connection.repository.ts index 8402647ef..747099360 100644 --- a/apps/connection/src/connection.repository.ts +++ b/apps/connection/src/connection.repository.ts @@ -377,4 +377,21 @@ export class ConnectionRepository { throw error; } } + + // eslint-disable-next-line camelcase + async getInvitationDidByOrgId(orgId: string): Promise { + try { + return this.prisma.agent_invitations.findMany({ + where: { + orgId + }, + orderBy: { + createDateTime: 'asc' + } + }); + } catch (error) { + this.logger.error(`Error in getInvitationDid in connection repository: ${error.message}`); + throw error; + } + } } diff --git a/apps/connection/src/connection.service.ts b/apps/connection/src/connection.service.ts index c4e273244..8d9de7702 100644 --- a/apps/connection/src/connection.service.ts +++ b/apps/connection/src/connection.service.ts @@ -26,6 +26,7 @@ import { IConnectionDetailsById } from 'apps/api-gateway/src/interfaces/IConnect import { IQuestionPayload } from './interfaces/question-answer.interfaces'; import { RecordType, user } from '@prisma/client'; import { UserActivityRepository } from 'libs/user-activity/repositories'; +import { agent_invitations } from '@prisma/client'; @Injectable() export class ConnectionService { constructor( @@ -692,8 +693,11 @@ export class ConnectionService { messages, multiUseInvitation, orgId, - routing - } = createOutOfBandConnectionInvitation; + routing, + recipientKey, + invitationDid, + IsReuseConnection + } = payload?.createOutOfBandConnectionInvitation; const agentDetails = await this.connectionRepository.getAgentEndPoint( payload?.createOutOfBandConnectionInvitation?.orgId @@ -704,6 +708,23 @@ export class ConnectionService { if (!agentDetails) { throw new NotFoundException(ResponseMessages.connection.error.agentEndPointNotFound); } + + let legacyinvitationDid; + if (IsReuseConnection) { + const data: agent_invitations[] = await this.connectionRepository.getInvitationDidByOrgId(orgId); + if (data && 0 < data.length) { + const [firstElement] = data; + legacyinvitationDid = firstElement?.invitationDid ?? undefined; + + this.logger.log('legacyinvitationDid:', legacyinvitationDid); + } + } + const connectionInvitationDid = invitationDid ? invitationDid : legacyinvitationDid; + + this.logger.log('connectionInvitationDid:', connectionInvitationDid); + + + this.logger.log(`logoUrl:::, ${organisation.logoUrl}`); const connectionPayload = { multiUseInvitation: multiUseInvitation ?? true, autoAcceptConnection: autoAcceptConnection ?? true, @@ -718,7 +739,7 @@ export class ConnectionService { routing: routing || undefined, messages: messages || undefined, recipientKey: recipientKey || undefined, - invitationDid: invitationDid || undefined + invitationDid: connectionInvitationDid || undefined }; const createConnectionInvitationFlag = 'connection-invitation'; diff --git a/apps/connection/src/interfaces/connection.interfaces.ts b/apps/connection/src/interfaces/connection.interfaces.ts index 02f530ff2..7a66d72d9 100644 --- a/apps/connection/src/interfaces/connection.interfaces.ts +++ b/apps/connection/src/interfaces/connection.interfaces.ts @@ -279,6 +279,7 @@ export interface ICreateConnectionInvitation { messages?: object[]; multiUseInvitation?: boolean; autoAcceptConnection?: boolean; + IsReuseConnection?: boolean; routing?: object; appendedAttachments?: object[]; orgId?: string;