@neuralinnovations/dataisland-sdk 0.0.1-dev6 → 0.0.1-dev61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +232 -3
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +103 -0
- package/dist/src/appBuilder.d.ts +44 -0
- package/dist/src/appBuilder.d.ts.map +1 -0
- package/dist/src/appBuilder.js +10 -0
- package/dist/src/appBuilder.js.map +1 -0
- package/dist/src/commands/deleteUserFullCommandHandler.d.ts +7 -0
- package/dist/src/commands/deleteUserFullCommandHandler.d.ts.map +1 -0
- package/dist/src/commands/deleteUserFullCommandHandler.js +21 -0
- package/dist/src/commands/deleteUserFullCommandHandler.js.map +1 -0
- package/dist/src/commands/startCommandHandler.d.ts +7 -0
- package/dist/src/commands/startCommandHandler.d.ts.map +1 -0
- package/dist/src/commands/startCommandHandler.js +30 -0
- package/dist/src/commands/startCommandHandler.js.map +1 -0
- package/dist/src/context.d.ts +24 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +31 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/credentials.d.ts +33 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +87 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/dataIslandApp.d.ts +55 -0
- package/dist/src/dataIslandApp.d.ts.map +1 -0
- package/dist/src/dataIslandApp.js +10 -0
- package/dist/src/dataIslandApp.js.map +1 -0
- package/dist/src/disposable.d.ts +84 -0
- package/dist/src/disposable.d.ts.map +1 -0
- package/dist/src/disposable.js +147 -0
- package/dist/src/disposable.js.map +1 -0
- package/dist/src/dto/accessGroupResponse.d.ts +30 -0
- package/dist/src/dto/accessGroupResponse.d.ts.map +1 -0
- package/dist/src/dto/accessGroupResponse.js +3 -0
- package/dist/src/dto/accessGroupResponse.js.map +1 -0
- package/dist/src/dto/acquiringResponse.d.ts +46 -0
- package/dist/src/dto/acquiringResponse.d.ts.map +1 -0
- package/dist/src/dto/acquiringResponse.js +11 -0
- package/dist/src/dto/acquiringResponse.js.map +1 -0
- package/dist/src/dto/badRequestResponse.d.ts +6 -0
- package/dist/src/dto/badRequestResponse.d.ts.map +1 -0
- package/dist/src/dto/badRequestResponse.js +3 -0
- package/dist/src/dto/badRequestResponse.js.map +1 -0
- package/dist/src/dto/chatResponse.d.ts +84 -0
- package/dist/src/dto/chatResponse.d.ts.map +1 -0
- package/dist/src/dto/chatResponse.js +45 -0
- package/dist/src/dto/chatResponse.js.map +1 -0
- package/dist/src/dto/limitsResponse.d.ts +29 -0
- package/dist/src/dto/limitsResponse.d.ts.map +1 -0
- package/dist/src/dto/limitsResponse.js +13 -0
- package/dist/src/dto/limitsResponse.js.map +1 -0
- package/dist/src/dto/quizResponse.d.ts +11 -0
- package/dist/src/dto/quizResponse.d.ts.map +1 -0
- package/dist/src/dto/quizResponse.js +3 -0
- package/dist/src/dto/quizResponse.js.map +1 -0
- package/dist/src/dto/statisticsResponse.d.ts +11 -0
- package/dist/src/dto/statisticsResponse.d.ts.map +1 -0
- package/dist/src/dto/statisticsResponse.js +3 -0
- package/dist/src/dto/statisticsResponse.js.map +1 -0
- package/dist/src/dto/userInfoResponse.d.ts +91 -0
- package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
- package/dist/src/dto/userInfoResponse.js +3 -0
- package/dist/src/dto/userInfoResponse.js.map +1 -0
- package/dist/src/dto/workspacesResponse.d.ts +51 -0
- package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
- package/dist/src/dto/workspacesResponse.js +11 -0
- package/dist/src/dto/workspacesResponse.js.map +1 -0
- package/dist/src/events.d.ts +17 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +52 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/index.d.ts +73 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +122 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal/app.impl.d.ts +30 -0
- package/dist/src/internal/app.impl.d.ts.map +1 -0
- package/dist/src/internal/app.impl.js +180 -0
- package/dist/src/internal/app.impl.js.map +1 -0
- package/dist/src/internal/appBuilder.impl.d.ts +27 -0
- package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
- package/dist/src/internal/appBuilder.impl.js +71 -0
- package/dist/src/internal/appBuilder.impl.js.map +1 -0
- package/dist/src/internal/createApp.impl.d.ts +4 -0
- package/dist/src/internal/createApp.impl.d.ts.map +1 -0
- package/dist/src/internal/createApp.impl.js +11 -0
- package/dist/src/internal/createApp.impl.js.map +1 -0
- package/dist/src/internal/registry.d.ts +66 -0
- package/dist/src/internal/registry.d.ts.map +1 -0
- package/dist/src/internal/registry.js +114 -0
- package/dist/src/internal/registry.js.map +1 -0
- package/dist/src/middleware.d.ts +6 -0
- package/dist/src/middleware.d.ts.map +1 -0
- package/dist/src/middleware.js +3 -0
- package/dist/src/middleware.js.map +1 -0
- package/dist/src/services/acquiringService.d.ts +9 -0
- package/dist/src/services/acquiringService.d.ts.map +1 -0
- package/dist/src/services/acquiringService.js +19 -0
- package/dist/src/services/acquiringService.js.map +1 -0
- package/dist/src/services/anonymousService.d.ts +8 -0
- package/dist/src/services/anonymousService.d.ts.map +1 -0
- package/dist/src/services/anonymousService.js +41 -0
- package/dist/src/services/anonymousService.js.map +1 -0
- package/dist/src/services/commandService.d.ts +18 -0
- package/dist/src/services/commandService.d.ts.map +1 -0
- package/dist/src/services/commandService.js +40 -0
- package/dist/src/services/commandService.js.map +1 -0
- package/dist/src/services/cookieService.d.ts +7 -0
- package/dist/src/services/cookieService.d.ts.map +1 -0
- package/dist/src/services/cookieService.js +18 -0
- package/dist/src/services/cookieService.js.map +1 -0
- package/dist/src/services/credentialService.d.ts +9 -0
- package/dist/src/services/credentialService.d.ts.map +1 -0
- package/dist/src/services/credentialService.js +26 -0
- package/dist/src/services/credentialService.js.map +1 -0
- package/dist/src/services/httpMethod.d.ts +2 -0
- package/dist/src/services/httpMethod.d.ts.map +1 -0
- package/dist/src/services/httpMethod.js +3 -0
- package/dist/src/services/httpMethod.js.map +1 -0
- package/dist/src/services/middlewareService.d.ts +10 -0
- package/dist/src/services/middlewareService.d.ts.map +1 -0
- package/dist/src/services/middlewareService.js +34 -0
- package/dist/src/services/middlewareService.js.map +1 -0
- package/dist/src/services/organizationService.d.ts +10 -0
- package/dist/src/services/organizationService.d.ts.map +1 -0
- package/dist/src/services/organizationService.js +19 -0
- package/dist/src/services/organizationService.js.map +1 -0
- package/dist/src/services/requestBuilder.d.ts +18 -0
- package/dist/src/services/requestBuilder.d.ts.map +1 -0
- package/dist/src/services/requestBuilder.js +118 -0
- package/dist/src/services/requestBuilder.js.map +1 -0
- package/dist/src/services/responseUtils.d.ts +8 -0
- package/dist/src/services/responseUtils.d.ts.map +1 -0
- package/dist/src/services/responseUtils.js +40 -0
- package/dist/src/services/responseUtils.js.map +1 -0
- package/dist/src/services/rpcService.d.ts +77 -0
- package/dist/src/services/rpcService.d.ts.map +1 -0
- package/dist/src/services/rpcService.js +125 -0
- package/dist/src/services/rpcService.js.map +1 -0
- package/dist/src/services/service.d.ts +21 -0
- package/dist/src/services/service.d.ts.map +1 -0
- package/dist/src/services/service.js +41 -0
- package/dist/src/services/service.js.map +1 -0
- package/dist/src/services/userProfileService.d.ts +10 -0
- package/dist/src/services/userProfileService.d.ts.map +1 -0
- package/dist/src/services/userProfileService.js +59 -0
- package/dist/src/services/userProfileService.js.map +1 -0
- package/dist/src/storages/acquirings/acquiring.d.ts +41 -0
- package/dist/src/storages/acquirings/acquiring.d.ts.map +1 -0
- package/dist/src/storages/acquirings/acquiring.impl.d.ts +20 -0
- package/dist/src/storages/acquirings/acquiring.impl.d.ts.map +1 -0
- package/dist/src/storages/acquirings/acquiring.impl.js +92 -0
- package/dist/src/storages/acquirings/acquiring.impl.js.map +1 -0
- package/dist/src/storages/acquirings/acquiring.js +10 -0
- package/dist/src/storages/acquirings/acquiring.js.map +1 -0
- package/dist/src/storages/chats/answer.d.ts +41 -0
- package/dist/src/storages/chats/answer.d.ts.map +1 -0
- package/dist/src/storages/chats/answer.impl.d.ts +29 -0
- package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/answer.impl.js +119 -0
- package/dist/src/storages/chats/answer.impl.js.map +1 -0
- package/dist/src/storages/chats/answer.js +15 -0
- package/dist/src/storages/chats/answer.js.map +1 -0
- package/dist/src/storages/chats/chat.d.ts +55 -0
- package/dist/src/storages/chats/chat.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.d.ts +28 -0
- package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.js +106 -0
- package/dist/src/storages/chats/chat.impl.js.map +1 -0
- package/dist/src/storages/chats/chat.js +12 -0
- package/dist/src/storages/chats/chat.js.map +1 -0
- package/dist/src/storages/chats/chats.d.ts +51 -0
- package/dist/src/storages/chats/chats.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.d.ts +20 -0
- package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.js +184 -0
- package/dist/src/storages/chats/chats.impl.js.map +1 -0
- package/dist/src/storages/chats/chats.js +16 -0
- package/dist/src/storages/chats/chats.js.map +1 -0
- package/dist/src/storages/files/file.d.ts +59 -0
- package/dist/src/storages/files/file.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.d.ts +28 -0
- package/dist/src/storages/files/file.impl.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.js +130 -0
- package/dist/src/storages/files/file.impl.js.map +1 -0
- package/dist/src/storages/files/file.js +17 -0
- package/dist/src/storages/files/file.js.map +1 -0
- package/dist/src/storages/files/files.d.ts +39 -0
- package/dist/src/storages/files/files.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.d.ts +24 -0
- package/dist/src/storages/files/files.impl.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.js +168 -0
- package/dist/src/storages/files/files.impl.js.map +1 -0
- package/dist/src/storages/files/files.js +20 -0
- package/dist/src/storages/files/files.js.map +1 -0
- package/dist/src/storages/files/filesPage.d.ts +28 -0
- package/dist/src/storages/files/filesPage.d.ts.map +1 -0
- package/dist/src/storages/files/filesPage.impl.d.ts +15 -0
- package/dist/src/storages/files/filesPage.impl.d.ts.map +1 -0
- package/dist/src/storages/files/filesPage.impl.js +38 -0
- package/dist/src/storages/files/filesPage.impl.js.map +1 -0
- package/dist/src/storages/files/filesPage.js +10 -0
- package/dist/src/storages/files/filesPage.js.map +1 -0
- package/dist/src/storages/groups/group.d.ts +63 -0
- package/dist/src/storages/groups/group.d.ts.map +1 -0
- package/dist/src/storages/groups/group.impl.d.ts +38 -0
- package/dist/src/storages/groups/group.impl.d.ts.map +1 -0
- package/dist/src/storages/groups/group.impl.js +210 -0
- package/dist/src/storages/groups/group.impl.js.map +1 -0
- package/dist/src/storages/groups/group.js +15 -0
- package/dist/src/storages/groups/group.js.map +1 -0
- package/dist/src/storages/groups/groups.d.ts +43 -0
- package/dist/src/storages/groups/groups.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.d.ts +31 -0
- package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.js +136 -0
- package/dist/src/storages/groups/groups.impl.js.map +1 -0
- package/dist/src/storages/groups/groups.js +20 -0
- package/dist/src/storages/groups/groups.js.map +1 -0
- package/dist/src/storages/organizations/organization.d.ts +103 -0
- package/dist/src/storages/organizations/organization.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.d.ts +44 -0
- package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.js +255 -0
- package/dist/src/storages/organizations/organization.impl.js.map +1 -0
- package/dist/src/storages/organizations/organization.js +18 -0
- package/dist/src/storages/organizations/organization.js.map +1 -0
- package/dist/src/storages/organizations/organizations.d.ts +51 -0
- package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts +39 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.js +173 -0
- package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
- package/dist/src/storages/organizations/organizations.js +20 -0
- package/dist/src/storages/organizations/organizations.js.map +1 -0
- package/dist/src/storages/user/userProfile.d.ts +59 -0
- package/dist/src/storages/user/userProfile.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.d.ts +22 -0
- package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.js +118 -0
- package/dist/src/storages/user/userProfile.impl.js.map +1 -0
- package/dist/src/storages/user/userProfile.js +12 -0
- package/dist/src/storages/user/userProfile.js.map +1 -0
- package/dist/src/storages/workspaces/workspace.d.ts +44 -0
- package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspace.impl.d.ts +23 -0
- package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspace.impl.js +98 -0
- package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
- package/dist/src/storages/workspaces/workspace.js +18 -0
- package/dist/src/storages/workspaces/workspace.js.map +1 -0
- package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
- package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
- package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspaces.impl.js +153 -0
- package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
- package/dist/src/storages/workspaces/workspaces.js +19 -0
- package/dist/src/storages/workspaces/workspaces.js.map +1 -0
- package/dist/src/unitTest.d.ts +12 -0
- package/dist/src/unitTest.d.ts.map +1 -0
- package/dist/src/unitTest.js +44 -0
- package/dist/src/unitTest.js.map +1 -0
- package/dist/src/utils/browserUtils.d.ts +4 -0
- package/dist/src/utils/browserUtils.d.ts.map +1 -0
- package/dist/src/utils/browserUtils.js +64 -0
- package/dist/src/utils/browserUtils.js.map +1 -0
- package/dist/src/utils/request.d.ts +6 -0
- package/dist/src/utils/request.d.ts.map +1 -0
- package/dist/src/utils/request.js +3 -0
- package/dist/src/utils/request.js.map +1 -0
- package/dist/src/utils/utils.d.ts +3 -0
- package/dist/src/utils/utils.d.ts.map +1 -0
- package/dist/src/utils/utils.js +13 -0
- package/dist/src/utils/utils.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +46 -5
- package/src/commands/deleteUserFullCommandHandler.ts +19 -0
- package/src/commands/startCommandHandler.ts +19 -5
- package/src/context.ts +4 -2
- package/src/credentials.ts +22 -0
- package/src/dataIslandApp.ts +8 -2
- package/src/disposable.ts +18 -5
- package/src/dto/accessGroupResponse.ts +19 -16
- package/src/dto/acquiringResponse.ts +54 -0
- package/src/dto/badRequestResponse.ts +6 -0
- package/src/dto/chatResponse.ts +60 -54
- package/src/dto/limitsResponse.ts +32 -0
- package/src/dto/quizResponse.ts +12 -0
- package/src/dto/statisticsResponse.ts +12 -0
- package/src/dto/userInfoResponse.ts +63 -2
- package/src/dto/workspacesResponse.ts +17 -3
- package/src/index.ts +57 -16
- package/src/internal/app.impl.ts +54 -12
- package/src/internal/registry.ts +54 -6
- package/src/middleware.ts +2 -0
- package/src/services/acquiringService.ts +21 -0
- package/src/services/anonymousService.ts +43 -0
- package/src/services/commandService.ts +4 -2
- package/src/services/cookieService.ts +16 -0
- package/src/services/httpMethod.ts +1 -0
- package/src/services/middlewareService.ts +1 -0
- package/src/services/organizationService.ts +2 -2
- package/src/services/requestBuilder.ts +26 -8
- package/src/services/responseUtils.ts +12 -0
- package/src/services/rpcService.ts +1 -0
- package/src/services/userProfileService.ts +36 -4
- package/src/storages/acquirings/acquiring.impl.ts +132 -0
- package/src/storages/acquirings/acquiring.ts +54 -0
- package/src/storages/chats/answer.impl.ts +162 -0
- package/src/storages/chats/answer.ts +53 -0
- package/src/storages/chats/chat.impl.ts +139 -0
- package/src/storages/chats/chat.ts +70 -0
- package/src/storages/chats/chats.impl.ts +255 -0
- package/src/storages/chats/chats.ts +60 -0
- package/src/storages/files/file.impl.ts +162 -0
- package/src/storages/files/file.ts +74 -0
- package/src/storages/{files.impl.ts → files/files.impl.ts} +88 -67
- package/src/storages/{files.ts → files/files.ts} +14 -7
- package/src/storages/files/filesPage.impl.ts +37 -0
- package/src/storages/{filesPage.ts → files/filesPage.ts} +6 -0
- package/src/storages/groups/group.impl.ts +276 -0
- package/src/storages/groups/group.ts +73 -0
- package/src/storages/groups/groups.impl.ts +180 -0
- package/src/storages/groups/groups.ts +50 -0
- package/src/storages/organizations/organization.impl.ts +387 -0
- package/src/storages/organizations/organization.ts +127 -0
- package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +55 -13
- package/src/storages/{organizations.ts → organizations/organizations.ts} +7 -1
- package/src/storages/user/userProfile.impl.ts +140 -0
- package/src/storages/user/userProfile.ts +75 -0
- package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +27 -7
- package/src/storages/{workspace.ts → workspaces/workspace.ts} +8 -3
- package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +29 -32
- package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
- package/src/unitTest.ts +3 -3
- package/src/utils/browserUtils.ts +68 -0
- package/src/utils/request.ts +6 -0
- package/src/utils/utils.ts +8 -0
- package/.browserslistrc +0 -5
- package/.editorconfig +0 -25
- package/.eslintrc.json +0 -44
- package/.github/workflows/publish-npm.yml +0 -28
- package/.prettierignore +0 -1
- package/.prettierrc +0 -11
- package/.yarnrc +0 -2
- package/babel.config.js +0 -6
- package/jest.config.ts +0 -199
- package/jest.setup.ts +0 -2
- package/src/storages/chat.ts +0 -21
- package/src/storages/chats.ts +0 -17
- package/src/storages/file.impl.ts +0 -69
- package/src/storages/file.ts +0 -28
- package/src/storages/groups.impl.ts +0 -337
- package/src/storages/groups.ts +0 -43
- package/src/storages/organization.impl.ts +0 -68
- package/src/storages/organization.ts +0 -33
- package/src/storages/userProfile.impl.ts +0 -56
- package/src/storages/userProfile.ts +0 -42
- package/test/commands.test.ts +0 -24
- package/test/data/test_file.pdf +0 -0
- package/test/disposable.test.ts +0 -39
- package/test/events.test.ts +0 -151
- package/test/files.test.ts +0 -52
- package/test/index.test.ts +0 -122
- package/test/organization.test.ts +0 -57
- package/test/registry.test.ts +0 -44
- package/test/services.test.ts +0 -56
- package/test/setup.ts +0 -54
- package/test/unitTest.test.ts +0 -21
- package/test/workspace.test.ts +0 -71
- package/tsconfig.json +0 -31
@@ -0,0 +1,127 @@
|
|
1
|
+
import {WorkspaceId, Workspaces} from "../workspaces/workspaces"
|
2
|
+
import { OrganizationId } from "./organizations"
|
3
|
+
import { Groups } from "../groups/groups"
|
4
|
+
import { Chats } from "../chats/chats"
|
5
|
+
import { EventDispatcher } from "../../events"
|
6
|
+
import {
|
7
|
+
CurrentLimitsData,
|
8
|
+
UserDto,
|
9
|
+
UsersStatisticsResponse
|
10
|
+
} from "../../dto/userInfoResponse"
|
11
|
+
import { GroupId } from "../groups/group"
|
12
|
+
import { StatisticsResponse } from "../../dto/statisticsResponse"
|
13
|
+
import { SegmentData } from "../../dto/limitsResponse"
|
14
|
+
import {FileId} from "../files/file"
|
15
|
+
import {QuizData} from "../../dto/quizResponse"
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Organization event.
|
19
|
+
*/
|
20
|
+
export enum OrganizationEvent {
|
21
|
+
CHANGED = "changed"
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Organization.
|
26
|
+
*/
|
27
|
+
export abstract class Organization extends EventDispatcher<
|
28
|
+
OrganizationEvent,
|
29
|
+
Organization
|
30
|
+
> {
|
31
|
+
/**
|
32
|
+
* Organization id.
|
33
|
+
*/
|
34
|
+
abstract get id(): OrganizationId
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Organization name.
|
38
|
+
*/
|
39
|
+
abstract get name(): string
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Organization description.
|
43
|
+
*/
|
44
|
+
abstract get description(): string
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Workspaces.
|
48
|
+
*/
|
49
|
+
abstract get workspaces(): Workspaces
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Chats.
|
53
|
+
*/
|
54
|
+
abstract get chats(): Chats
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Groups.
|
58
|
+
*/
|
59
|
+
abstract get accessGroups(): Groups
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Get organization members
|
63
|
+
*/
|
64
|
+
abstract members(): Promise<UserDto[]>
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Get organization statistics
|
68
|
+
* @param dateFrom
|
69
|
+
* @param dateTo
|
70
|
+
*/
|
71
|
+
abstract statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse>
|
72
|
+
|
73
|
+
/**
|
74
|
+
* Get organization statistics
|
75
|
+
* @param dateFrom
|
76
|
+
* @param dateTo
|
77
|
+
*/
|
78
|
+
abstract membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse>
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Get statistics for user
|
82
|
+
* @param userid
|
83
|
+
* @param dateFrom
|
84
|
+
* @param dateTo
|
85
|
+
*/
|
86
|
+
abstract userStatistic(userid: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse>
|
87
|
+
|
88
|
+
/**
|
89
|
+
* Get user limits data
|
90
|
+
*/
|
91
|
+
abstract userLimits(): Promise<CurrentLimitsData>
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Get default organization limits
|
95
|
+
*/
|
96
|
+
abstract organizationLimits(): Promise<SegmentData>
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Get all available segments data
|
100
|
+
*/
|
101
|
+
abstract limitSegments(): Promise<SegmentData[]>
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Change organization name and description.
|
105
|
+
*/
|
106
|
+
abstract change(name: string, description: string): Promise<void>
|
107
|
+
|
108
|
+
/**
|
109
|
+
* Invite users with given emails to organization
|
110
|
+
*/
|
111
|
+
abstract inviteUsers(emails: string[], accessGroups: GroupId[]): Promise<void>
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Create invite code for users outside organization
|
115
|
+
*/
|
116
|
+
abstract createInviteCode(accessGroups: GroupId[]): Promise<string>
|
117
|
+
|
118
|
+
/**
|
119
|
+
* Create quiz for given topic
|
120
|
+
* @param workspaces - workspaces to search for topic
|
121
|
+
* @param query - search query and quiz topic
|
122
|
+
* @param questionsCount - count of quiz tests
|
123
|
+
* @param optionsCount - count of one question options
|
124
|
+
* @param fileId - file id in case of test-on-file
|
125
|
+
*/
|
126
|
+
abstract createQuiz(workspaces: WorkspaceId[], query: string, questionsCount: number, optionsCount: number, fileId: FileId): Promise<QuizData>
|
127
|
+
}
|
@@ -4,11 +4,12 @@ import {
|
|
4
4
|
Organizations
|
5
5
|
} from "./organizations"
|
6
6
|
import { OrganizationImpl } from "./organization.impl"
|
7
|
-
import { RpcService } from "
|
8
|
-
import { OrganizationDto, UserSettings } from "
|
9
|
-
import { Context } from "
|
7
|
+
import { RpcService } from "../../services/rpcService"
|
8
|
+
import { ApplyInviteCodeResponse, OrganizationDto, UserSettings } from "../../dto/userInfoResponse"
|
9
|
+
import { Context } from "../../context"
|
10
10
|
import { Organization } from "./organization"
|
11
|
-
import { ResponseUtils } from "
|
11
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
12
|
+
import { UserProfileService } from "../../services/userProfileService"
|
12
13
|
|
13
14
|
export class OrganizationsImpl extends Organizations {
|
14
15
|
constructor(public readonly context: Context) {
|
@@ -61,6 +62,27 @@ export class OrganizationsImpl extends Organizations {
|
|
61
62
|
return this.internalDeleteOrganization(id)
|
62
63
|
}
|
63
64
|
|
65
|
+
async applyInviteCode(code: string): Promise<ApplyInviteCodeResponse> {
|
66
|
+
const response = await this.context
|
67
|
+
.resolve(RpcService)
|
68
|
+
?.requestBuilder("api/v1/Invites/apply")
|
69
|
+
.sendPutJson({
|
70
|
+
code: code
|
71
|
+
})
|
72
|
+
if (ResponseUtils.isFail(response)) {
|
73
|
+
await ResponseUtils.throwError(
|
74
|
+
"Invite code validation failed",
|
75
|
+
response
|
76
|
+
)
|
77
|
+
}
|
78
|
+
|
79
|
+
await this.context.resolve(UserProfileService)?.fetch()
|
80
|
+
|
81
|
+
const result = (await response?.json()) as ApplyInviteCodeResponse
|
82
|
+
|
83
|
+
return result
|
84
|
+
}
|
85
|
+
|
64
86
|
//----------------------------------------------------------------------------
|
65
87
|
// INTERNALS
|
66
88
|
//----------------------------------------------------------------------------
|
@@ -79,17 +101,22 @@ export class OrganizationsImpl extends Organizations {
|
|
79
101
|
if (!this.contains(id)) {
|
80
102
|
throw new Error(`Organization delete, id: ${id} is not found`)
|
81
103
|
}
|
104
|
+
// send request to the server
|
82
105
|
const response = await this.context
|
83
106
|
.resolve(RpcService)
|
84
107
|
?.requestBuilder("/api/v1/Organizations")
|
85
108
|
.searchParam("id", id)
|
86
109
|
.sendDelete()
|
110
|
+
|
111
|
+
// check response status
|
87
112
|
if (ResponseUtils.isFail(response)) {
|
88
113
|
await ResponseUtils.throwError(
|
89
114
|
`Organization ${id} delete, failed`,
|
90
115
|
response
|
91
116
|
)
|
92
117
|
}
|
118
|
+
|
119
|
+
// check organization in collection
|
93
120
|
const org = <OrganizationImpl>this.get(id)
|
94
121
|
const index = this.organizations.indexOf(org)
|
95
122
|
if (index < 0) {
|
@@ -134,7 +161,8 @@ export class OrganizationsImpl extends Organizations {
|
|
134
161
|
profile: {
|
135
162
|
name: name,
|
136
163
|
description: description
|
137
|
-
}
|
164
|
+
},
|
165
|
+
currentOrganizationId: this.currentOrganizationId
|
138
166
|
})
|
139
167
|
if (ResponseUtils.isFail(response)) {
|
140
168
|
await ResponseUtils.throwError(
|
@@ -142,7 +170,9 @@ export class OrganizationsImpl extends Organizations {
|
|
142
170
|
response
|
143
171
|
)
|
144
172
|
}
|
145
|
-
const content = (await response!.json()
|
173
|
+
const content = (await response!.json() as {
|
174
|
+
organization: OrganizationDto
|
175
|
+
}).organization as OrganizationDto
|
146
176
|
|
147
177
|
// create organization and init from content
|
148
178
|
const org = await new OrganizationImpl(this.context).initFrom(content, true)
|
@@ -170,22 +200,34 @@ export class OrganizationsImpl extends Organizations {
|
|
170
200
|
organizations: OrganizationDto[],
|
171
201
|
settings: UserSettings | null | undefined
|
172
202
|
): Promise<void> {
|
203
|
+
|
204
|
+
this.organizations = []
|
205
|
+
|
206
|
+
// set current organization
|
173
207
|
this.currentOrganizationId = settings?.activeOrganizationId
|
208
|
+
|
209
|
+
// wait list
|
210
|
+
const waitList: Promise<OrganizationImpl>[] = []
|
211
|
+
|
212
|
+
// init organizations
|
174
213
|
for (const organization of organizations) {
|
175
214
|
// create organization and init from content
|
176
|
-
const
|
215
|
+
const orgPromise = new OrganizationImpl(this.context).initFrom(
|
177
216
|
organization,
|
178
217
|
adminInOrganization.includes(organization.id)
|
179
218
|
)
|
180
219
|
|
220
|
+
// add organization to wait list
|
221
|
+
waitList.push(orgPromise)
|
222
|
+
}
|
223
|
+
|
224
|
+
// wait for all organizations
|
225
|
+
const orgImpls = await Promise.all(waitList)
|
226
|
+
|
227
|
+
// add organizations to collection
|
228
|
+
for (const org of orgImpls) {
|
181
229
|
// add organization to collection
|
182
230
|
this.organizations.push(org)
|
183
|
-
|
184
|
-
// dispatch event, organization added
|
185
|
-
this.dispatch({
|
186
|
-
type: OrganizationsEvent.ADDED,
|
187
|
-
data: org
|
188
|
-
})
|
189
231
|
}
|
190
232
|
}
|
191
233
|
}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { ApplyInviteCodeResponse } from "../../dto/userInfoResponse"
|
2
|
+
import { EventDispatcher } from "../../events"
|
2
3
|
import { Organization } from "./organization"
|
3
4
|
|
4
5
|
/**
|
@@ -53,4 +54,9 @@ export abstract class Organizations extends EventDispatcher<
|
|
53
54
|
* Delete organization.
|
54
55
|
*/
|
55
56
|
abstract delete(id: OrganizationId): Promise<void>
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Apply invite code for user
|
60
|
+
*/
|
61
|
+
abstract applyInviteCode(code: string): Promise<ApplyInviteCodeResponse>
|
56
62
|
}
|
@@ -0,0 +1,140 @@
|
|
1
|
+
import { UserEvent, UserProfile } from "./userProfile"
|
2
|
+
import { UserInfoResponse } from "../../dto/userInfoResponse"
|
3
|
+
import { Context } from "../../context"
|
4
|
+
import { RpcService } from "../../services/rpcService"
|
5
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
6
|
+
import { UserProfileService } from "../../services/userProfileService"
|
7
|
+
|
8
|
+
export class UserProfileImpl extends UserProfile {
|
9
|
+
private content?: UserInfoResponse
|
10
|
+
|
11
|
+
|
12
|
+
constructor(private readonly context: Context) {
|
13
|
+
super()
|
14
|
+
}
|
15
|
+
|
16
|
+
get id(): string {
|
17
|
+
if (this.content) {
|
18
|
+
return this.content.user.id
|
19
|
+
}
|
20
|
+
throw new Error("The profile is not loaded.")
|
21
|
+
}
|
22
|
+
|
23
|
+
get name(): string {
|
24
|
+
if (this.content) {
|
25
|
+
return this.content.user.profile.name
|
26
|
+
}
|
27
|
+
throw new Error("The profile is not loaded.")
|
28
|
+
}
|
29
|
+
|
30
|
+
get email(): string {
|
31
|
+
if (this.content) {
|
32
|
+
return this.content.user.profile.email
|
33
|
+
}
|
34
|
+
throw new Error("The profile is not loaded.")
|
35
|
+
}
|
36
|
+
|
37
|
+
get binanceId(): string {
|
38
|
+
if (this.content) {
|
39
|
+
return this.content.user.profile.binanceId
|
40
|
+
}
|
41
|
+
throw new Error("The profile is not loaded.")
|
42
|
+
}
|
43
|
+
|
44
|
+
get educationalInstitution(): string {
|
45
|
+
if (this.content){
|
46
|
+
return this.content.user.profile.educationalInstitution
|
47
|
+
}
|
48
|
+
throw new Error("The profile is not loaded.")
|
49
|
+
}
|
50
|
+
|
51
|
+
get isDeleted(): boolean {
|
52
|
+
if (this.content) {
|
53
|
+
return this.content.user.isDeleted
|
54
|
+
}
|
55
|
+
throw new Error("The profile is not loaded.")
|
56
|
+
}
|
57
|
+
|
58
|
+
get isAnonymous(): boolean {
|
59
|
+
if (this.content) {
|
60
|
+
return this.content.user.isAnonymousMode
|
61
|
+
}
|
62
|
+
throw new Error("The profile is not loaded.")
|
63
|
+
}
|
64
|
+
|
65
|
+
get createdAt(): Date {
|
66
|
+
if (this.content) {
|
67
|
+
return new Date(this.content.user.created_at)
|
68
|
+
}
|
69
|
+
throw new Error("The profile is not loaded.")
|
70
|
+
}
|
71
|
+
|
72
|
+
get modifiedAt(): Date {
|
73
|
+
if (this.content) {
|
74
|
+
return new Date(this.content.user.modified_at)
|
75
|
+
}
|
76
|
+
throw new Error("The profile is not loaded.")
|
77
|
+
}
|
78
|
+
|
79
|
+
initFrom(content: UserInfoResponse) {
|
80
|
+
this.content = content
|
81
|
+
this.dispatch({
|
82
|
+
type: UserEvent.CHANGED,
|
83
|
+
data: this
|
84
|
+
})
|
85
|
+
}
|
86
|
+
|
87
|
+
async fetch() : Promise<void>{
|
88
|
+
await this.context.resolve(UserProfileService)?.fetch()
|
89
|
+
}
|
90
|
+
|
91
|
+
async updateUser(name: string, binanceId: string, educationalInstitution: string): Promise<void>{
|
92
|
+
if (!this.content) {
|
93
|
+
throw new Error("User is not loaded.")
|
94
|
+
}
|
95
|
+
|
96
|
+
if (name === this.name && binanceId === this.binanceId && educationalInstitution === this.educationalInstitution) {
|
97
|
+
return Promise.resolve()
|
98
|
+
}
|
99
|
+
|
100
|
+
const response = await this.context
|
101
|
+
.resolve(RpcService)
|
102
|
+
?.requestBuilder("api/v1/Users")
|
103
|
+
.sendPutJson({
|
104
|
+
profile: {
|
105
|
+
name,
|
106
|
+
binanceId,
|
107
|
+
educationalInstitution
|
108
|
+
}
|
109
|
+
})
|
110
|
+
|
111
|
+
if (ResponseUtils.isFail(response)) {
|
112
|
+
await ResponseUtils.throwError("Failed to change organization", response)
|
113
|
+
}
|
114
|
+
|
115
|
+
if (this.content) {
|
116
|
+
this.content!.user.profile.name = name
|
117
|
+
this.content!.user.profile.binanceId = binanceId
|
118
|
+
this.content!.user.profile.educationalInstitution = educationalInstitution
|
119
|
+
}
|
120
|
+
|
121
|
+
this.dispatch({
|
122
|
+
type: UserEvent.CHANGED,
|
123
|
+
data: this
|
124
|
+
})
|
125
|
+
}
|
126
|
+
|
127
|
+
async deleteUser(): Promise<boolean>{
|
128
|
+
const response = await this.context
|
129
|
+
.resolve(RpcService)?.
|
130
|
+
requestBuilder("/api/v1/Users/self")
|
131
|
+
.sendDelete()
|
132
|
+
|
133
|
+
if (ResponseUtils.isFail(response)) {
|
134
|
+
await ResponseUtils.throwError("Failed to delete user", response)
|
135
|
+
}
|
136
|
+
|
137
|
+
return true
|
138
|
+
}
|
139
|
+
|
140
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import { EventDispatcher } from "../../events"
|
2
|
+
|
3
|
+
export type UserId = string
|
4
|
+
|
5
|
+
export enum UserEvent {
|
6
|
+
CHANGED = "changed"
|
7
|
+
}
|
8
|
+
|
9
|
+
export abstract class UserProfile extends EventDispatcher<
|
10
|
+
UserEvent,
|
11
|
+
UserProfile
|
12
|
+
> {
|
13
|
+
/**
|
14
|
+
* User id.
|
15
|
+
*/
|
16
|
+
abstract get id(): UserId
|
17
|
+
|
18
|
+
/**
|
19
|
+
* User name.
|
20
|
+
*/
|
21
|
+
abstract get name(): string
|
22
|
+
|
23
|
+
/**
|
24
|
+
* User email.
|
25
|
+
*/
|
26
|
+
abstract get email(): string
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Additional binance ID
|
30
|
+
*/
|
31
|
+
abstract get binanceId(): string
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Additional educational institution
|
35
|
+
*/
|
36
|
+
abstract get educationalInstitution() : string
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Is user deleted.
|
40
|
+
*/
|
41
|
+
abstract get isDeleted(): boolean
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Is user anonymous
|
45
|
+
*/
|
46
|
+
abstract get isAnonymous(): boolean
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Created at.
|
50
|
+
*/
|
51
|
+
abstract get createdAt(): Date
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Modified at.
|
55
|
+
*/
|
56
|
+
abstract get modifiedAt(): Date
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Fetch user profile
|
60
|
+
*/
|
61
|
+
abstract fetch(): Promise<void>
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Update user profile
|
65
|
+
* @param newName
|
66
|
+
* @param newId
|
67
|
+
* @param newEducationalInstitution
|
68
|
+
*/
|
69
|
+
abstract updateUser(newName: string, newId: string, newEducationalInstitution: string): Promise<void>
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Delete User
|
73
|
+
*/
|
74
|
+
abstract deleteUser(): Promise<boolean>
|
75
|
+
}
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { Context } from "
|
2
|
-
import { Files } from "
|
1
|
+
import { Context } from "../../context"
|
2
|
+
import { Files } from "../files/files"
|
3
3
|
import { Workspace, WorkspaceEvent } from "./workspace"
|
4
|
-
import { OrganizationImpl } from "
|
5
|
-
import { WorkspaceDto } from "
|
6
|
-
import { RpcService } from "
|
7
|
-
import { FilesImpl } from "
|
8
|
-
import { ResponseUtils } from "
|
4
|
+
import { OrganizationImpl } from "../organizations/organization.impl"
|
5
|
+
import { WorkspaceDto } from "../../dto/workspacesResponse"
|
6
|
+
import { RpcService } from "../../services/rpcService"
|
7
|
+
import { FilesImpl } from "../files/files.impl"
|
8
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
9
9
|
|
10
10
|
export class WorkspaceImpl extends Workspace {
|
11
11
|
private _isMarkAsDeleted: boolean = false
|
@@ -46,6 +46,26 @@ export class WorkspaceImpl extends Workspace {
|
|
46
46
|
return this._files
|
47
47
|
}
|
48
48
|
|
49
|
+
async filesCount(): Promise<number> {
|
50
|
+
// send request to the server
|
51
|
+
const response = await this.context
|
52
|
+
.resolve(RpcService)
|
53
|
+
?.requestBuilder("api/v1/Workspaces/files/count")
|
54
|
+
.searchParam("workspaceId", this.id)
|
55
|
+
.searchParam("organizationId", this.organization.id)
|
56
|
+
.sendGet()
|
57
|
+
|
58
|
+
// check response status
|
59
|
+
if (ResponseUtils.isFail(response)) {
|
60
|
+
await ResponseUtils.throwError(
|
61
|
+
`Failed during get workspace total files count for ${this.id} of ${this.organization.id}`,
|
62
|
+
response
|
63
|
+
)
|
64
|
+
}
|
65
|
+
|
66
|
+
return ((await response!.json()) as { count: number }).count
|
67
|
+
}
|
68
|
+
|
49
69
|
async change(name: string, description: string): Promise<void> {
|
50
70
|
if (!this._workspace) {
|
51
71
|
throw new Error("Workspace is not loaded.")
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import { EventDispatcher } from "
|
2
|
-
import { Files } from "
|
1
|
+
import { EventDispatcher } from "../../events"
|
2
|
+
import { Files } from "../files/files"
|
3
3
|
import { WorkspaceId } from "./workspaces"
|
4
|
-
import { Organization } from "
|
4
|
+
import { Organization } from "../organizations/organization"
|
5
5
|
|
6
6
|
/**
|
7
7
|
* Workspace event.
|
@@ -42,6 +42,11 @@ export abstract class Workspace extends EventDispatcher<
|
|
42
42
|
*/
|
43
43
|
abstract get files(): Files
|
44
44
|
|
45
|
+
/**
|
46
|
+
* Workspace files count.
|
47
|
+
*/
|
48
|
+
abstract filesCount(): Promise<number>
|
49
|
+
|
45
50
|
/**
|
46
51
|
* Change workspace name and description.
|
47
52
|
*/
|
@@ -1,13 +1,15 @@
|
|
1
1
|
import { WorkspaceId, Workspaces, WorkspacesEvent } from "./workspaces"
|
2
|
-
import { OrganizationImpl } from "
|
3
|
-
import { Context } from "
|
2
|
+
import { OrganizationImpl } from "../organizations/organization.impl"
|
3
|
+
import { Context } from "../../context"
|
4
4
|
import { Workspace } from "./workspace"
|
5
5
|
import { WorkspaceImpl } from "./workspace.impl"
|
6
|
-
import { OrganizationId } from "
|
7
|
-
import { RpcService } from "
|
8
|
-
import { OrganizationWorkspaces } from "
|
9
|
-
import { WorkspaceDto } from "
|
10
|
-
import { ResponseUtils } from "
|
6
|
+
import { OrganizationId } from "../organizations/organizations"
|
7
|
+
import { RpcService } from "../../services/rpcService"
|
8
|
+
import { OrganizationWorkspaces } from "../../dto/userInfoResponse"
|
9
|
+
import { WorkspaceDto } from "../../dto/workspacesResponse"
|
10
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
11
|
+
import { UserProfileService } from "../../services/userProfileService"
|
12
|
+
import { UserProfile } from "../user/userProfile"
|
11
13
|
|
12
14
|
export class WorkspacesImpl extends Workspaces {
|
13
15
|
private readonly _workspaces: WorkspaceImpl[] = []
|
@@ -46,10 +48,10 @@ export class WorkspacesImpl extends Workspaces {
|
|
46
48
|
description: string,
|
47
49
|
regulation?: {
|
48
50
|
isCreateNewGroup: boolean
|
49
|
-
newGroupName
|
50
|
-
groupIds
|
51
|
+
newGroupName?: string
|
52
|
+
groupIds?: string[]
|
51
53
|
}
|
52
|
-
): Promise<Workspace> {
|
54
|
+
): Promise<Workspace | undefined> {
|
53
55
|
if (name === undefined || name === null || name.trim() === "") {
|
54
56
|
throw new Error("Name is required, must be not empty")
|
55
57
|
}
|
@@ -67,20 +69,6 @@ export class WorkspacesImpl extends Workspaces {
|
|
67
69
|
) {
|
68
70
|
throw new Error("isCreateNewGroup is required, must be not empty")
|
69
71
|
}
|
70
|
-
if (
|
71
|
-
regulation.newGroupName === undefined ||
|
72
|
-
regulation.newGroupName === null ||
|
73
|
-
regulation.newGroupName.trim() === ""
|
74
|
-
) {
|
75
|
-
throw new Error("newGroupName is required, must be not empty")
|
76
|
-
}
|
77
|
-
if (
|
78
|
-
regulation.groupIds === undefined ||
|
79
|
-
regulation.groupIds === null ||
|
80
|
-
regulation.groupIds.length === 0
|
81
|
-
) {
|
82
|
-
throw new Error("groupIds is required, must be not empty")
|
83
|
-
}
|
84
72
|
}
|
85
73
|
|
86
74
|
// send create request to the server
|
@@ -94,19 +82,25 @@ export class WorkspacesImpl extends Workspaces {
|
|
94
82
|
description: description
|
95
83
|
},
|
96
84
|
regulation: {
|
97
|
-
isCreateNewGroup: regulation?.isCreateNewGroup
|
98
|
-
newGroupName: regulation?.newGroupName
|
99
|
-
groupIds: regulation?.groupIds
|
85
|
+
isCreateNewGroup: regulation?.isCreateNewGroup,
|
86
|
+
newGroupName: regulation?.newGroupName,
|
87
|
+
groupIds: regulation?.groupIds
|
100
88
|
}
|
101
89
|
})
|
102
90
|
|
103
91
|
// check response status
|
104
92
|
if (ResponseUtils.isFail(response)) {
|
105
|
-
await ResponseUtils.
|
93
|
+
if (await ResponseUtils.isLimitReached()){
|
94
|
+
return undefined
|
95
|
+
}
|
96
|
+
|
97
|
+
await ResponseUtils.throwError(`Failed to create workspace, in organization: ${this.organization.id}`, response)
|
106
98
|
}
|
107
99
|
|
108
100
|
// parse workspace from the server's response
|
109
|
-
const content = (await response!.json())
|
101
|
+
const content = ((await response!.json()) as {
|
102
|
+
workspace: WorkspaceDto
|
103
|
+
}).workspace as WorkspaceDto
|
110
104
|
|
111
105
|
// create workspace implementation
|
112
106
|
const workspace = new WorkspaceImpl(this.organization, this.context)
|
@@ -115,6 +109,8 @@ export class WorkspacesImpl extends Workspaces {
|
|
115
109
|
// add workspace to the collection
|
116
110
|
this._workspaces.push(workspace)
|
117
111
|
|
112
|
+
await this.organization.accessGroups.reload()
|
113
|
+
|
118
114
|
// dispatch event
|
119
115
|
this.dispatch({
|
120
116
|
type: WorkspacesEvent.ADDED,
|
@@ -139,7 +135,7 @@ export class WorkspacesImpl extends Workspaces {
|
|
139
135
|
|
140
136
|
// check if workspace is already marked as deleted
|
141
137
|
if (workspace.isMarkAsDeleted) {
|
142
|
-
throw new Error(`Workspace ${id} is already marked as deleted`)
|
138
|
+
throw new Error(`Workspace ${id} is already marked as deleted, in organization: ${this.organization.id}`)
|
143
139
|
}
|
144
140
|
|
145
141
|
// mark workspace as deleted
|
@@ -155,7 +151,7 @@ export class WorkspacesImpl extends Workspaces {
|
|
155
151
|
// check response status
|
156
152
|
if (ResponseUtils.isFail(response)) {
|
157
153
|
await ResponseUtils.throwError(
|
158
|
-
`Failed to delete workspace: ${workspace.organization.name}/${workspace.name}:${id}`,
|
154
|
+
`Failed to delete workspace: ${workspace.organization.name}/${workspace.name}:${id}, in organization: ${this.organization.id}`,
|
159
155
|
response
|
160
156
|
)
|
161
157
|
}
|
@@ -184,7 +180,8 @@ export class WorkspacesImpl extends Workspaces {
|
|
184
180
|
|
185
181
|
// check response status
|
186
182
|
if (ResponseUtils.isFail(response)) {
|
187
|
-
|
183
|
+
const userProfile = this.context.resolve(UserProfileService)?.userProfile as UserProfile
|
184
|
+
await ResponseUtils.throwError(`Failed to fetch workspaces in organization: ${organizationId}, userId: ${userProfile.id}, email: ${userProfile.email}`, response)
|
188
185
|
}
|
189
186
|
|
190
187
|
// parse workspaces from the server's response
|