diff --git a/source/api/user_api.ts b/source/api/user_api.ts index a05ef89..de41bba 100644 --- a/source/api/user_api.ts +++ b/source/api/user_api.ts @@ -6,6 +6,7 @@ import UserRole from "../models/enums/user_role"; import ApiInvitation from "../models/api/api_invitation"; import ApiCreateInvitationForm from "../models/api/api_create_invitation_form"; import ApiUserPermission from "../models/api/api_user_permission"; +import {AssociationIds} from "../models"; export default class UserApi { @@ -60,6 +61,12 @@ export default class UserApi { return Http.post(url, null, {email, token, password}) as unknown as Promise; } + //bulk-invite + + static sendBulkInvites({organizationId}: AssociationIds, tsvContent: string, user: User): Promise { + const url = `${Http.baseUrl()}/users/bulk-invite/${organizationId}`; + return Http.postTsvMulipartFormData(url, user, tsvContent) as unknown as Promise; } + } makeErrorsPretty(UserApi, { diff --git a/source/utilities/http.ts b/source/utilities/http.ts index 1e5d141..16c97e8 100644 --- a/source/utilities/http.ts +++ b/source/utilities/http.ts @@ -56,6 +56,19 @@ export default class Http { }); } + static postTsvMulipartFormData(url: RequestInfo, user: User, tsvContent: string ) { + let multipartFormData = new FormData(); + let file = new Blob([tsvContent], { type: "text/tab-separated-values" }); + multipartFormData.append("file", file, "file.tsv"); + return Http.fetch(url, { + method: "POST", + headers: { + ...getAuthorizationHeaders(user) + }, + body: multipartFormData + }); + } + static patch(url: RequestInfo, user: User, body: any) { return Http.fetch(url, { method: "PATCH",