api.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { ProjectMember } from '@/shared/context/types/project-metadata'
  2. import {
  3. deleteJSON,
  4. getJSON,
  5. postJSON,
  6. putJSON,
  7. } from '../../../infrastructure/fetch-json'
  8. import { executeV2Captcha } from './captcha'
  9. import getMeta from '@/utils/meta'
  10. import { PermissionsLevel } from '@/features/ide-react/types/permissions'
  11. export function sendInvite(
  12. projectId: string,
  13. email: string,
  14. privileges: PermissionsLevel
  15. ) {
  16. return executeV2Captcha(
  17. getMeta('ol-ExposedSettings').recaptchaDisabled?.invite
  18. ).then(grecaptchaResponse => {
  19. return postJSON(`/project/${projectId}/invite`, {
  20. body: {
  21. email, // TODO: normalisedEmail?
  22. privileges,
  23. 'g-recaptcha-response': grecaptchaResponse,
  24. },
  25. })
  26. })
  27. }
  28. export function resendInvite(projectId: string, invite: ProjectMember) {
  29. return postJSON(`/project/${projectId}/invite/${invite._id}/resend`)
  30. }
  31. export function revokeInvite(projectId: string, invite: ProjectMember) {
  32. return deleteJSON(`/project/${projectId}/invite/${invite._id}`)
  33. }
  34. export function updateMember(
  35. projectId: string,
  36. member: ProjectMember,
  37. data: { privilegeLevel: PermissionsLevel }
  38. ) {
  39. return putJSON(`/project/${projectId}/users/${member._id}`, {
  40. body: data,
  41. })
  42. }
  43. export function removeMemberFromProject(
  44. projectId: string,
  45. member: ProjectMember
  46. ) {
  47. return deleteJSON(`/project/${projectId}/users/${member._id}`)
  48. }
  49. export function transferProjectOwnership(
  50. projectId: string,
  51. member: ProjectMember
  52. ) {
  53. return postJSON(`/project/${projectId}/transfer-ownership`, {
  54. body: {
  55. user_id: member._id,
  56. },
  57. })
  58. }
  59. export function setPublicAccessLevel(
  60. projectId: string,
  61. publicAccessLevel: string
  62. ) {
  63. return postJSON(`/project/${projectId}/settings/admin`, {
  64. body: { publicAccessLevel },
  65. })
  66. }
  67. export function listProjectMembers(projectId: string) {
  68. return getJSON(`/project/${projectId}/members`)
  69. }
  70. export function listProjectInvites(projectId: string) {
  71. return getJSON(`/project/${projectId}/invites`)
  72. }