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({ const response = await createService().inviteToWorkspace({
workspaceUuid: 'w-1-2-3', workspaceUuid: 'w-1-2-3',
inviteeEmail: 'test@test.te', inviteeEmail: 'test@test.te',
accessLevel: 'write-and-read',
}) })
expect(response).toEqual({ expect(response).toEqual({
@@ -107,6 +108,7 @@ describe('WorkspaceApiService', () => {
expect(workspaceServer.inviteToWorkspace).toHaveBeenCalledWith({ expect(workspaceServer.inviteToWorkspace).toHaveBeenCalledWith({
workspaceUuid: 'w-1-2-3', workspaceUuid: 'w-1-2-3',
inviteeEmail: 'test@test.te', inviteeEmail: 'test@test.te',
accessLevel: 'write-and-read',
}) })
}) })
@@ -121,6 +123,7 @@ describe('WorkspaceApiService', () => {
await service.inviteToWorkspace({ await service.inviteToWorkspace({
workspaceUuid: 'w-1-2-3', workspaceUuid: 'w-1-2-3',
inviteeEmail: 'test@test.te', inviteeEmail: 'test@test.te',
accessLevel: 'write-and-read',
}) })
} catch (caughtError) { } catch (caughtError) {
error = caughtError error = caughtError
@@ -139,6 +142,7 @@ describe('WorkspaceApiService', () => {
await createService().inviteToWorkspace({ await createService().inviteToWorkspace({
workspaceUuid: 'w-1-2-3', workspaceUuid: 'w-1-2-3',
inviteeEmail: 'test@test.te', inviteeEmail: 'test@test.te',
accessLevel: 'write-and-read',
}) })
} catch (caughtError) { } catch (caughtError) {
error = 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) this.lockOperation(WorkspaceApiOperations.Inviting)
try { try {
const response = await this.workspaceServer.inviteToWorkspace({ const response = await this.workspaceServer.inviteToWorkspace({
inviteeEmail: dto.inviteeEmail, inviteeEmail: dto.inviteeEmail,
workspaceUuid: dto.workspaceUuid, workspaceUuid: dto.workspaceUuid,
accessLevel: dto.accessLevel,
}) })
this.unlockOperation(WorkspaceApiOperations.Inviting) this.unlockOperation(WorkspaceApiOperations.Inviting)

View File

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

View File

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

View File

@@ -42,6 +42,7 @@ describe('WorkspaceServer', () => {
const response = await createServer().inviteToWorkspace({ const response = await createServer().inviteToWorkspace({
inviteeEmail: 'test@test.te', inviteeEmail: 'test@test.te',
workspaceUuid: 'w-1-2-3', workspaceUuid: 'w-1-2-3',
accessLevel: 'write-and-read',
}) })
expect(response).toEqual({ expect(response).toEqual({

View File

@@ -9,7 +9,11 @@ export interface WorkspaceClientInterface {
publicKey?: string publicKey?: string
workspaceName?: string workspaceName?: string
}): Promise<{ uuid: string } | null> }): 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: { acceptInvite(dto: {
inviteUuid: Uuid inviteUuid: Uuid
userUuid: 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 { try {
const result = await this.workspaceApiService.inviteToWorkspace(dto) const result = await this.workspaceApiService.inviteToWorkspace(dto)