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 =