import React, { useCallback } from 'react'
import PropTypes from 'prop-types'
import {
useProjectContext,
useShareProjectContext,
} from './share-project-modal'
import Icon from '../../../shared/components/icon'
import { Button, Col, Row, OverlayTrigger, Tooltip } from 'react-bootstrap'
import { Trans } from 'react-i18next'
import MemberPrivileges from './member-privileges'
import { resendInvite, revokeInvite } from '../utils/api'
export default function Invite({ invite, isAdmin }) {
return (
{invite.email}
.
{isAdmin && }
{isAdmin && (
)}
)
}
Invite.propTypes = {
invite: PropTypes.object.isRequired,
isAdmin: PropTypes.bool.isRequired,
}
function ResendInvite({ invite }) {
const { monitorRequest } = useShareProjectContext()
const project = useProjectContext()
// const buttonRef = useRef(null)
//
const handleClick = useCallback(
() =>
monitorRequest(() => resendInvite(project, invite)).finally(() => {
// NOTE: disabled as react-bootstrap v0.33.1 isn't forwarding the ref to the `button`
// if (buttonRef.current) {
// buttonRef.current.blur()
// }
document.activeElement.blur()
}),
[invite, monitorRequest, project]
)
return (
)
}
ResendInvite.propTypes = {
invite: PropTypes.object.isRequired,
}
function RevokeInvite({ invite }) {
const { updateProject, monitorRequest } = useShareProjectContext()
const project = useProjectContext()
function handleClick(event) {
event.preventDefault()
monitorRequest(() => revokeInvite(project, invite)).then(() => {
updateProject({
invites: project.invites.filter(existing => existing !== invite),
})
})
}
return (
}
>
)
}
RevokeInvite.propTypes = {
invite: PropTypes.object.isRequired,
}