From 49b3d2714fbe4ac9f9242097b8df6b4e3d604513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Tue, 11 Oct 2022 11:46:19 +0200 Subject: [PATCH] feat(api): add access level to invitation requests --- .../Domain/Client/Workspace/WorkspaceApiService.spec.ts | 4 ++++ .../api/src/Domain/Client/Workspace/WorkspaceApiService.ts | 7 ++++++- .../Client/Workspace/WorkspaceApiServiceInterface.ts | 6 +++++- .../Request/Workspace/WorkspaceInvitationRequestParams.ts | 1 + .../src/Domain/Server/Workspace/WorkspaceServer.spec.ts | 1 + .../src/Domain/Workspace/WorkspaceClientInterface.ts | 6 +++++- packages/services/src/Domain/Workspace/WorkspaceManager.ts | 6 +++++- 7 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.spec.ts b/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.spec.ts index 7ded2d50d..61edf8f72 100644 --- a/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.spec.ts +++ b/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.spec.ts @@ -97,6 +97,7 @@ describe('WorkspaceApiService', () => { const response = await createService().inviteToWorkspace({ workspaceUuid: 'w-1-2-3', inviteeEmail: 'test@test.te', + accessLevel: 'write-and-read', }) expect(response).toEqual({ @@ -107,6 +108,7 @@ describe('WorkspaceApiService', () => { expect(workspaceServer.inviteToWorkspace).toHaveBeenCalledWith({ workspaceUuid: 'w-1-2-3', inviteeEmail: 'test@test.te', + accessLevel: 'write-and-read', }) }) @@ -121,6 +123,7 @@ describe('WorkspaceApiService', () => { await service.inviteToWorkspace({ workspaceUuid: 'w-1-2-3', inviteeEmail: 'test@test.te', + accessLevel: 'write-and-read', }) } catch (caughtError) { error = caughtError @@ -139,6 +142,7 @@ describe('WorkspaceApiService', () => { await createService().inviteToWorkspace({ workspaceUuid: 'w-1-2-3', inviteeEmail: 'test@test.te', + accessLevel: 'write-and-read', }) } catch (caughtError) { error = caughtError diff --git a/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.ts b/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.ts index caef6b4cd..741cfdf0e 100644 --- a/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.ts +++ b/packages/api/src/Domain/Client/Workspace/WorkspaceApiService.ts @@ -56,13 +56,18 @@ export class WorkspaceApiService implements WorkspaceApiServiceInterface { } } - async inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise { + async inviteToWorkspace(dto: { + inviteeEmail: string + workspaceUuid: Uuid + accessLevel: string + }): Promise { this.lockOperation(WorkspaceApiOperations.Inviting) try { const response = await this.workspaceServer.inviteToWorkspace({ inviteeEmail: dto.inviteeEmail, workspaceUuid: dto.workspaceUuid, + accessLevel: dto.accessLevel, }) this.unlockOperation(WorkspaceApiOperations.Inviting) diff --git a/packages/api/src/Domain/Client/Workspace/WorkspaceApiServiceInterface.ts b/packages/api/src/Domain/Client/Workspace/WorkspaceApiServiceInterface.ts index 77312b7a5..1b6fe08b7 100644 --- a/packages/api/src/Domain/Client/Workspace/WorkspaceApiServiceInterface.ts +++ b/packages/api/src/Domain/Client/Workspace/WorkspaceApiServiceInterface.ts @@ -13,7 +13,11 @@ export interface WorkspaceApiServiceInterface { publicKey?: string workspaceName?: string }): Promise - inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise + inviteToWorkspace(dto: { + inviteeEmail: string + workspaceUuid: Uuid + accessLevel: string + }): Promise acceptInvite(dto: { inviteUuid: Uuid userUuid: Uuid diff --git a/packages/api/src/Domain/Request/Workspace/WorkspaceInvitationRequestParams.ts b/packages/api/src/Domain/Request/Workspace/WorkspaceInvitationRequestParams.ts index 3f4a541b7..2c198faa6 100644 --- a/packages/api/src/Domain/Request/Workspace/WorkspaceInvitationRequestParams.ts +++ b/packages/api/src/Domain/Request/Workspace/WorkspaceInvitationRequestParams.ts @@ -3,5 +3,6 @@ import { Uuid } from '@standardnotes/common' export type WorkspaceInvitationRequestParams = { workspaceUuid: Uuid inviteeEmail: string + accessLevel: string [additionalParam: string]: unknown } diff --git a/packages/api/src/Domain/Server/Workspace/WorkspaceServer.spec.ts b/packages/api/src/Domain/Server/Workspace/WorkspaceServer.spec.ts index 1ca14646c..b46abc49d 100644 --- a/packages/api/src/Domain/Server/Workspace/WorkspaceServer.spec.ts +++ b/packages/api/src/Domain/Server/Workspace/WorkspaceServer.spec.ts @@ -42,6 +42,7 @@ describe('WorkspaceServer', () => { const response = await createServer().inviteToWorkspace({ inviteeEmail: 'test@test.te', workspaceUuid: 'w-1-2-3', + accessLevel: 'write-and-read', }) expect(response).toEqual({ diff --git a/packages/services/src/Domain/Workspace/WorkspaceClientInterface.ts b/packages/services/src/Domain/Workspace/WorkspaceClientInterface.ts index 7c4ec1a2c..5000d9aa3 100644 --- a/packages/services/src/Domain/Workspace/WorkspaceClientInterface.ts +++ b/packages/services/src/Domain/Workspace/WorkspaceClientInterface.ts @@ -9,7 +9,11 @@ export interface WorkspaceClientInterface { publicKey?: string workspaceName?: string }): Promise<{ uuid: string } | null> - inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise<{ uuid: string } | null> + inviteToWorkspace(dto: { + inviteeEmail: string + workspaceUuid: Uuid + accessLevel: string + }): Promise<{ uuid: string } | null> acceptInvite(dto: { inviteUuid: Uuid userUuid: Uuid diff --git a/packages/services/src/Domain/Workspace/WorkspaceManager.ts b/packages/services/src/Domain/Workspace/WorkspaceManager.ts index f8f542e4c..baae68710 100644 --- a/packages/services/src/Domain/Workspace/WorkspaceManager.ts +++ b/packages/services/src/Domain/Workspace/WorkspaceManager.ts @@ -47,7 +47,11 @@ export class WorkspaceManager extends AbstractService implements WorkspaceClient } } - async inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise<{ uuid: string } | null> { + async inviteToWorkspace(dto: { + inviteeEmail: string + workspaceUuid: Uuid + accessLevel: string + }): Promise<{ uuid: string } | null> { try { const result = await this.workspaceApiService.inviteToWorkspace(dto)