import {ReportProps} from 'common/report'
import {capitalize} from 'lodash'
import {useState} from 'react'
import {toast} from 'react-hot-toast'
import {Button} from 'web/components/buttons/button'
import {Col} from 'web/components/layout/col'
import {Modal} from 'web/components/layout/modal'
import {Row} from 'web/components/layout/row'
import {Title} from 'web/components/widgets/title'
import {useUser} from 'web/hooks/use-user'
import {report as reportContent} from 'web/lib/api'
import {withTracking} from 'web/lib/service/analytics'
export function ReportButton(props: {report: ReportProps}) {
const {report} = props
const {contentOwnerId, contentType} = report
const currentUser = useUser()
const [isModalOpen, setIsModalOpen] = useState(false)
const label = contentType === 'contract' ? 'question' : contentType
if (!currentUser || currentUser.id === contentOwnerId) return null
return (
<>
>
)
}
export const ReportModal = (props: {
isModalOpen: boolean
setIsModalOpen: (isModalOpen: boolean) => void
label: string
report: ReportProps
}) => {
const {label, report, setIsModalOpen, isModalOpen} = props
const [isReported, setIsReported] = useState(false)
const onReport = async () => {
await toast.promise(reportContent(report), {
loading: 'Reporting...',
success: `${capitalize(label)} reported! Admins will take a look within 24 hours.`,
error: `Error reporting ${label}`,
})
setIsReported(true)
}
return (
Report {label}
{isReported
? `You've reported this ${label}. Our team will take a look within 24 hours.`
: `Report this ${label} for objectionable content that violates our `}
guidelines
.
{!isReported && (
)}
)
}