first commit

This commit is contained in:
2025-04-24 13:11:28 +08:00
commit ff9c54d5e4
5960 changed files with 834111 additions and 0 deletions

View File

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

View File

@@ -0,0 +1,26 @@
let _recaptchaId
let _recaptchaResolve
export function executeV2Captcha(disabled = false) {
return new Promise((resolve, reject) => {
if (disabled || !window.grecaptcha) {
return resolve()
}
try {
if (!_recaptchaId) {
_recaptchaId = window.grecaptcha.render('recaptcha', {
callback: token => {
if (_recaptchaResolve) {
_recaptchaResolve(token)
_recaptchaResolve = undefined
}
window.grecaptcha.reset()
},
})
}
_recaptchaResolve = resolve
} catch (error) {
reject(error)
}
})
}

View File

@@ -0,0 +1,6 @@
import { formatDate } from '@/utils/dates'
export const linkSharingEnforcementDate = formatDate(
new Date(2024, 7, 26),
'MMMM Do'
) // August 26th 2024