feat(api): add access level to invitation requests

This commit is contained in:
Karol Sójko
2022-10-11 11:46:19 +02:00
parent 1540143dad
commit 49b3d2714f
7 changed files with 27 additions and 4 deletions

View File

@@ -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

View File

@@ -56,13 +56,18 @@ export class WorkspaceApiService implements WorkspaceApiServiceInterface {
}
}
async inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise<WorkspaceInvitationResponse> {
async inviteToWorkspace(dto: {
inviteeEmail: string
workspaceUuid: Uuid
accessLevel: string
}): Promise<WorkspaceInvitationResponse> {
this.lockOperation(WorkspaceApiOperations.Inviting)
try {
const response = await this.workspaceServer.inviteToWorkspace({
inviteeEmail: dto.inviteeEmail,
workspaceUuid: dto.workspaceUuid,
accessLevel: dto.accessLevel,
})
this.unlockOperation(WorkspaceApiOperations.Inviting)

View File

@@ -13,7 +13,11 @@ export interface WorkspaceApiServiceInterface {
publicKey?: string
workspaceName?: string
}): Promise<WorkspaceCreationResponse>
inviteToWorkspace(dto: { inviteeEmail: string; workspaceUuid: Uuid }): Promise<WorkspaceInvitationResponse>
inviteToWorkspace(dto: {
inviteeEmail: string
workspaceUuid: Uuid
accessLevel: string
}): Promise<WorkspaceInvitationResponse>
acceptInvite(dto: {
inviteUuid: Uuid
userUuid: Uuid

View File

@@ -3,5 +3,6 @@ import { Uuid } from '@standardnotes/common'
export type WorkspaceInvitationRequestParams = {
workspaceUuid: Uuid
inviteeEmail: string
accessLevel: string
[additionalParam: string]: unknown
}

View File

@@ -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({

View File

@@ -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

View File

@@ -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)