Merge pull request #27878 from overleaf/dp-share-project-modal-utils-typescript
Convert remaining share-project-modal utils to typescript GitOrigin-RevId: fc3fc7fbf7c8057c57f0aab261e4cedc3f7c602e
This commit is contained in:
+3
-2
@@ -13,9 +13,10 @@ import OLForm from '@/shared/components/ol/ol-form'
|
||||
import OLFormGroup from '@/shared/components/ol/ol-form-group'
|
||||
import { Select } from '@/shared/components/select'
|
||||
import OLButton from '@/shared/components/ol/ol-button'
|
||||
import { PermissionsLevel } from '@/features/ide-react/types/permissions'
|
||||
|
||||
export default function AddCollaborators({ readOnly }: { readOnly?: boolean }) {
|
||||
const [privileges, setPrivileges] = useState('readAndWrite')
|
||||
const [privileges, setPrivileges] = useState<PermissionsLevel>('readAndWrite')
|
||||
|
||||
const isMounted = useIsMounted()
|
||||
|
||||
@@ -176,7 +177,7 @@ export default function AddCollaborators({ readOnly }: { readOnly?: boolean }) {
|
||||
|
||||
const privilegeOptions = useMemo(() => {
|
||||
const options: {
|
||||
key: string
|
||||
key: PermissionsLevel
|
||||
label: string
|
||||
description?: string | null
|
||||
}[] = [
|
||||
|
||||
+28
-9
@@ -1,3 +1,4 @@
|
||||
import { ProjectMember } from '@/shared/context/types/project-metadata'
|
||||
import {
|
||||
deleteJSON,
|
||||
getJSON,
|
||||
@@ -6,8 +7,13 @@ import {
|
||||
} from '../../../infrastructure/fetch-json'
|
||||
import { executeV2Captcha } from './captcha'
|
||||
import getMeta from '@/utils/meta'
|
||||
import { PermissionsLevel } from '@/features/ide-react/types/permissions'
|
||||
|
||||
export function sendInvite(projectId, email, privileges) {
|
||||
export function sendInvite(
|
||||
projectId: string,
|
||||
email: string,
|
||||
privileges: PermissionsLevel
|
||||
) {
|
||||
return executeV2Captcha(
|
||||
getMeta('ol-ExposedSettings').recaptchaDisabled?.invite
|
||||
).then(grecaptchaResponse => {
|
||||
@@ -21,25 +27,35 @@ export function sendInvite(projectId, email, privileges) {
|
||||
})
|
||||
}
|
||||
|
||||
export function resendInvite(projectId, invite) {
|
||||
export function resendInvite(projectId: string, invite: ProjectMember) {
|
||||
return postJSON(`/project/${projectId}/invite/${invite._id}/resend`)
|
||||
}
|
||||
|
||||
export function revokeInvite(projectId, invite) {
|
||||
export function revokeInvite(projectId: string, invite: ProjectMember) {
|
||||
return deleteJSON(`/project/${projectId}/invite/${invite._id}`)
|
||||
}
|
||||
|
||||
export function updateMember(projectId, member, data) {
|
||||
export function updateMember(
|
||||
projectId: string,
|
||||
member: ProjectMember,
|
||||
data: { privilegeLevel: PermissionsLevel }
|
||||
) {
|
||||
return putJSON(`/project/${projectId}/users/${member._id}`, {
|
||||
body: data,
|
||||
})
|
||||
}
|
||||
|
||||
export function removeMemberFromProject(projectId, member) {
|
||||
export function removeMemberFromProject(
|
||||
projectId: string,
|
||||
member: ProjectMember
|
||||
) {
|
||||
return deleteJSON(`/project/${projectId}/users/${member._id}`)
|
||||
}
|
||||
|
||||
export function transferProjectOwnership(projectId, member) {
|
||||
export function transferProjectOwnership(
|
||||
projectId: string,
|
||||
member: ProjectMember
|
||||
) {
|
||||
return postJSON(`/project/${projectId}/transfer-ownership`, {
|
||||
body: {
|
||||
user_id: member._id,
|
||||
@@ -47,16 +63,19 @@ export function transferProjectOwnership(projectId, member) {
|
||||
})
|
||||
}
|
||||
|
||||
export function setPublicAccessLevel(projectId, publicAccessLevel) {
|
||||
export function setPublicAccessLevel(
|
||||
projectId: string,
|
||||
publicAccessLevel: string
|
||||
) {
|
||||
return postJSON(`/project/${projectId}/settings/admin`, {
|
||||
body: { publicAccessLevel },
|
||||
})
|
||||
}
|
||||
|
||||
export function listProjectMembers(projectId) {
|
||||
export function listProjectMembers(projectId: string) {
|
||||
return getJSON(`/project/${projectId}/members`)
|
||||
}
|
||||
|
||||
export function listProjectInvites(projectId) {
|
||||
export function listProjectInvites(projectId: string) {
|
||||
return getJSON(`/project/${projectId}/invites`)
|
||||
}
|
||||
+6
-5
@@ -1,7 +1,8 @@
|
||||
let _recaptchaId
|
||||
let _recaptchaResolve
|
||||
export function executeV2Captcha(disabled = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let _recaptchaId: string
|
||||
let _recaptchaResolve: ((token: string) => void) | undefined
|
||||
|
||||
export function executeV2Captcha(disabled: boolean = false) {
|
||||
return new Promise<void | string>((resolve, reject) => {
|
||||
if (disabled || !window.grecaptcha) {
|
||||
return resolve()
|
||||
}
|
||||
@@ -9,7 +10,7 @@ export function executeV2Captcha(disabled = false) {
|
||||
try {
|
||||
if (!_recaptchaId) {
|
||||
_recaptchaId = window.grecaptcha.render('recaptcha', {
|
||||
callback: token => {
|
||||
callback: (token: string) => {
|
||||
if (_recaptchaResolve) {
|
||||
_recaptchaResolve(token)
|
||||
_recaptchaResolve = undefined
|
||||
@@ -28,5 +28,6 @@ declare global {
|
||||
|
||||
propensity?: (propensityId?: string) => void
|
||||
olLoadGA?: () => void
|
||||
grecaptcha?: any
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user