overleaf/services/web/frontend/js/features/share-project-modal/utils/api.js

68 lines
1.7 KiB
JavaScript
Raw Normal View History

import {
deleteJSON,
getJSON,
postJSON,
putJSON
} from '../../../infrastructure/fetch-json'
import { executeV2Captcha } from './captcha'
export function sendInvite(project, email, privileges) {
return executeV2Captcha(
window.ExposedSettings.recaptchaDisabled?.invite
).then(grecaptchaResponse => {
return postJSON(`/project/${project._id}/invite`, {
body: {
email, // TODO: normalisedEmail?
privileges,
'g-recaptcha-response': grecaptchaResponse
}
})
})
}
export function resendInvite(project, invite) {
return postJSON(`/project/${project._id}/invite/${invite._id}/resend`)
}
export function revokeInvite(project, invite) {
return deleteJSON(`/project/${project._id}/invite/${invite._id}`)
}
export function updateMember(project, member, data) {
return putJSON(`/project/${project._id}/users/${member._id}`, {
body: data
})
}
export function removeMemberFromProject(project, member) {
return deleteJSON(`/project/${project._id}/users/${member._id}`)
}
export function transferProjectOwnership(project, member) {
return postJSON(`/project/${project._id}/transfer-ownership`, {
body: {
user_id: member._id
}
})
}
export function setProjectAccessLevel(project, publicAccessLevel) {
return postJSON(`/project/${project._id}/settings/admin`, {
body: { publicAccessLevel }
})
}
// export function updateProjectAdminSettings(project, data) {
// return postJSON(`/project/${project._id}/settings/admin`, {
// body: data
// })
// }
export function listProjectMembers(project) {
return getJSON(`/project/${project._id}/members`)
}
export function listProjectInvites(project) {
return getJSON(`/project/${project._id}/invites`)
}