diff --git a/components/forms/signupForm.tsx b/components/forms/signupForm.tsx index 724ffe974..6f8f33022 100644 --- a/components/forms/signupForm.tsx +++ b/components/forms/signupForm.tsx @@ -1,3 +1,4 @@ +import { TERMS_OF_SERVICE_URL } from '@root/constants/externalLinks'; import { blueButton } from '@root/helpers/className'; import classNames from 'classnames'; import Link from 'next/link'; @@ -219,7 +220,7 @@ export default function SignupForm({ recaptchaPublicKey }: SignupFormProps) {
diff --git a/components/level/info/levelDropdown.tsx b/components/level/info/levelDropdown.tsx index f1b242718..2188ce5b7 100644 --- a/components/level/info/levelDropdown.tsx +++ b/components/level/info/levelDropdown.tsx @@ -3,8 +3,10 @@ import ArchiveLevelModal from '@root/components/modal/archiveLevelModal'; import DeleteLevelModal from '@root/components/modal/deleteLevelModal'; import EditLevelModal from '@root/components/modal/editLevelModal'; import PublishLevelModal from '@root/components/modal/publishLevelModal'; +import ReportModal from '@root/components/modal/reportModal'; import SaveToCollectionModal from '@root/components/modal/saveToCollectionModal'; import UnpublishLevelModal from '@root/components/modal/unpublishLevelModal'; +import { ReportType } from '@root/constants/ReportType'; import { AppContext } from '@root/contexts/appContext'; import { PageContext } from '@root/contexts/pageContext'; import isCurator from '@root/helpers/isCurator'; @@ -27,13 +29,17 @@ export default function LevelDropdown({ level }: LevelDropdownProps) { const [isSaveToCollectionOpen, setIsSaveToCollectionOpen] = useState(false); const [isUnpublishLevelOpen, setIsUnpublishLevelOpen] = useState(false); const { mutatePlayLater, playLater, user } = useContext(AppContext); - const { setPreventKeyDownEvent } = useContext(PageContext); + const { setPreventKeyDownEvent, setModal } = useContext(PageContext); const isAuthor = level.userId === user?._id || level.userId._id === user?._id; const canEdit = isAuthor || isCurator(user); const boldedLevelName = {level.name}; const isInPlayLater = !!(playLater && playLater[level._id.toString()]); + const modal = ; + const reportLevel = async () => { + setModal(modal); + }; const fetchPlayLater = async (remove: boolean) => { if (!user) { return; @@ -324,7 +330,28 @@ export default function LevelDropdown({ level }: LevelDropdownProps) { } } + + {({ active }) => ( +
{ + reportLevel(); + }} + style={{ + backgroundColor: active ? 'var(--bg-color-3)' : undefined, + }} + > + + + + + Report +
+ )} +
+
+ diff --git a/components/level/reviews/commentThread.tsx b/components/level/reviews/commentThread.tsx index 244db572d..abbca0338 100644 --- a/components/level/reviews/commentThread.tsx +++ b/components/level/reviews/commentThread.tsx @@ -1,6 +1,10 @@ +import { Menu, Transition } from '@headlessui/react'; +import ReportModal from '@root/components/modal/reportModal'; +import { ReportType } from '@root/constants/ReportType'; +import { PageContext } from '@root/contexts/pageContext'; import classNames from 'classnames'; import { Types } from 'mongoose'; -import React, { useContext, useEffect, useRef, useState } from 'react'; +import React, { Fragment, useContext, useEffect, useRef, useState } from 'react'; import toast from 'react-hot-toast'; import ReactTextareaAutosize from 'react-textarea-autosize'; import { KeyedMutator } from 'swr'; @@ -30,6 +34,11 @@ export default function CommentThread({ className, comment, mutateComments, onSe const [totalRows, setTotalRows] = useState(comment.totalReplies || 0); const [page, setPage] = useState(0); const { user } = useContext(AppContext); + const { setModal } = useContext(PageContext); + const modal = ; + const reportComment = async () => { + setModal(modal); + }; useEffect(() => { const urlParams = new URLSearchParams(window.location.search); @@ -189,6 +198,45 @@ export default function CommentThread({ className, comment, mutateComments, onSe } + { user && comment.author._id !== user._id && + + + + + + + + + {({ active }) => ( +
{ + reportComment(); + }} + style={{ + backgroundColor: active ? 'var(--bg-color-3)' : undefined, + }} + > + + + + + Report +
+ )} +
+
+
+
+ } {(comment.author._id.toString() === user?._id.toString() || (user?._id === comment.target)) && (