api.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {
  2. deleteJSON,
  3. getJSON,
  4. postJSON,
  5. putJSON,
  6. } from '../../../infrastructure/fetch-json'
  7. import { executeV2Captcha } from './captcha'
  8. export function sendInvite(projectId, email, privileges) {
  9. return executeV2Captcha(
  10. window.ExposedSettings.recaptchaDisabled?.invite
  11. ).then(grecaptchaResponse => {
  12. return postJSON(`/project/${projectId}/invite`, {
  13. body: {
  14. email, // TODO: normalisedEmail?
  15. privileges,
  16. 'g-recaptcha-response': grecaptchaResponse,
  17. },
  18. })
  19. })
  20. }
  21. export function resendInvite(projectId, invite) {
  22. return postJSON(`/project/${projectId}/invite/${invite._id}/resend`)
  23. }
  24. export function revokeInvite(projectId, invite) {
  25. return deleteJSON(`/project/${projectId}/invite/${invite._id}`)
  26. }
  27. export function updateMember(projectId, member, data) {
  28. return putJSON(`/project/${projectId}/users/${member._id}`, {
  29. body: data,
  30. })
  31. }
  32. export function removeMemberFromProject(projectId, member) {
  33. return deleteJSON(`/project/${projectId}/users/${member._id}`)
  34. }
  35. export function transferProjectOwnership(projectId, member) {
  36. return postJSON(`/project/${projectId}/transfer-ownership`, {
  37. body: {
  38. user_id: member._id,
  39. },
  40. })
  41. }
  42. export function setProjectAccessLevel(projectId, publicAccessLevel) {
  43. return postJSON(`/project/${projectId}/settings/admin`, {
  44. body: { publicAccessLevel },
  45. })
  46. }
  47. export function listProjectMembers(projectId) {
  48. return getJSON(`/project/${projectId}/members`)
  49. }
  50. export function listProjectInvites(projectId) {
  51. return getJSON(`/project/${projectId}/invites`)
  52. }