From 91256184fe8057f546f67e1057c2e13cc7fc2ae9 Mon Sep 17 00:00:00 2001 From: Pranav Ramesh Date: Tue, 17 Sep 2024 17:28:57 -0400 Subject: [PATCH] feat: creator insights platform --- package.json | 6 +- public/insightDemo.png | Bin 0 -> 79454 bytes src/pages/challenges/[...id].jsx | 90 ++++++++++++++- src/pages/create.jsx | 190 ++++++++++++++++++++++++++++++- yarn.lock | 34 +++++- 5 files changed, 306 insertions(+), 14 deletions(-) create mode 100644 public/insightDemo.png diff --git a/package.json b/package.json index f36fd89..07e8673 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "next": "^14.0.2", "next-pwa": "^5.6.0", "next-remove-imports": "^1.0.12", + "node-fetch": "^2.6.7", "postcss-focus-visible": "^6.0.4", "puppeteer": "^22.0.0", "react": "18.2.0", @@ -80,15 +81,14 @@ "react-transition-group": "^4.4.5", "react-visibility-sensor": "^5.1.1", "reactjs-popup": "^2.0.5", - "recharts": "^2.5.0", + "recharts": "^2.12.7", "simplemde": "^1.11.2", "socket.io-client": "^4.7.4", "stripe": "^13.9.0", "tailwind-merge": "^2.3.0", "tailwindcss": "^3.2.1", "tailwindcss-animate": "^1.0.7", - "xterm": "^5.3.0", - "node-fetch": "^2.6.7" + "xterm": "^5.3.0" }, "devDependencies": { "eslint": "8.26.0", diff --git a/public/insightDemo.png b/public/insightDemo.png new file mode 100644 index 0000000000000000000000000000000000000000..f084d97d702510124b4014c3db001394ae08c360 GIT binary patch literal 79454 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 K-l}g;U-~bQRMJEM literal 0 HcmV?d00001 diff --git a/src/pages/challenges/[...id].jsx b/src/pages/challenges/[...id].jsx index 669cbbf..ca01180 100644 --- a/src/pages/challenges/[...id].jsx +++ b/src/pages/challenges/[...id].jsx @@ -21,6 +21,7 @@ import Confetti from 'react-confetti'; import { Context } from '@/context'; import { useRef } from 'react'; import WriteupModal from '@/components/WriteupModal'; +import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts'; export default function Challenge() { @@ -711,7 +712,56 @@ function HintsPage({ cache }) { function DescriptionPage({ cache, fileIDName, fileIDLink }) { + + const { challenge } = cache; + + const [solvesData, setSolvesData] = useState([]); + const [creatorMode, setCreatorMode] = useState(false); // Add state for creator mode + + const [insights, setInsights] = useState({ + solves: 0, + attempts: 0, + solvesLast30Days: 0, + attemptsLast30Days: 0, + }); + + useEffect(() => { + const fetchSolvesData = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/${challenge.id}/insights/solvesLast10Days`, 'GET', null); + setSolvesData(response); + console.log(response); + } catch (error) { + console.error('Failed to fetch solves data: ', error); + } + }; + + const fetchCreatorMode = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/account`, 'GET', null); + setCreatorMode(response.creatorMode); + console.log(response.creatorMode); + } catch (error) { + console.error('Failed to fetch creator mode: ', error); + } + }; + + const fetchInsights = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/${challenge.id}/insights`, 'GET', null); + setInsights(response); + console.log(response); + } catch (error) { + console.error('Failed to fetch solves data: ', error); + } + }; + + fetchSolvesData(); + fetchInsights(); + fetchCreatorMode(); + }, [challenge]); + const [challengeData, setChallengeData] = useState(null); const [authorPfp, setAuthorPfp] = useState(null); const { username } = useContext(Context); @@ -821,8 +871,43 @@ function DescriptionPage({ cache, fileIDName, fileIDLink }) { ) : (

You may need to boot the terminal to see the associated files.

)} - - +
+ {creatorMode && ( + <> +
+
+
+

Creator Insights

+
+
+
+

Solves

+

{insights.solves}

+
+
+

Attempts

+

{insights.attempts}

+
+
+

Solves (30d)

+

{insights.solvesLast30Days}

+
+
+

Attempts (30d)

+

{insights.attemptsLast30Days}

+
+
+
+ + + + + + +
+
+ + )}
@@ -1603,4 +1688,3 @@ function DeleteCommentModal({ isOpen, onClose, onConfirm }) { ); } - diff --git a/src/pages/create.jsx b/src/pages/create.jsx index 337eac0..d103c52 100644 --- a/src/pages/create.jsx +++ b/src/pages/create.jsx @@ -20,6 +20,8 @@ import Box from '@mui/material/Box'; import { useRouter } from 'next/router'; import { ToastContainer, toast } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; +import { Dialog, Transition } from '@headlessui/react'; +import { Fragment } from 'react'; export default function Create() { const router = useRouter(); @@ -254,6 +256,52 @@ export default function Create() { fetchNotifications(); }, []); + const [showCreatorMode, setShowCreatorMode] = useState(null); + + const [isEnableModalOpen, setIsEnableModalOpen] = useState(false); + const [isDisableModalOpen, setIsDisableModalOpen] = useState(false); + + const handleEnableCreatorMode = async () => { + try { + await request(`${process.env.NEXT_PUBLIC_API_URL}/account/creatorMode`, 'POST', { creatorMode: true }); + setIsEnableModalOpen(false); + // Additional logic to enable creator mode + setCreatorMode(true); + setShowCreatorMode(true); + toast.success('Creator mode enabled successfully'); + } catch (error) { + console.error('Error enabling creator mode:', error); + toast.error('Failed to enable creator mode'); + } + }; + + const handleDisableCreatorMode = async () => { + try { + await request(`${process.env.NEXT_PUBLIC_API_URL}/account/creatorMode`, 'POST', { creatorMode: false }); + setIsDisableModalOpen(false); + setCreatorMode(false); + setShowCreatorMode(true); + toast.success('Creator mode disabled successfully'); + } catch (error) { + console.error('Error disabling creator mode:', error); + } + }; + + const [creatorMode, setCreatorMode] = useState(false); + + useEffect(() => { + const fetchCreatorMode = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/account`, "GET", null); + setCreatorMode(response.creatorMode); + } catch (error) { + console.error('Error fetching creator mode:', error); + } + }; + + fetchCreatorMode(); + }, []); + return ( <> @@ -489,7 +537,7 @@ export default function Create() { )} -
+

@@ -567,8 +615,8 @@ export default function Create() {

-
-
+
+

@@ -593,7 +641,7 @@ export default function Create() { Module Name - + Last Updated @@ -643,6 +691,135 @@ export default function Create() {
+ + + + + + setIsEnableModalOpen(false)}> + +
+ + +
+
+ + + + Enable Creator Mode BETA + +
+ +

+ Creator mode will allow you to see insights for every challenge on CTFGuide. You're welcome to leverage this data when creating challenges. +



+ + Are you sure you want to enable creator mode? +

+
+ +
+ + +
+
+
+
+
+
+
+ + + setIsDisableModalOpen(false)}> + +
+ + +
+
+ + + + Disable Creator Mode + +
+

+ Are you sure you want to disable creator mode? +

+
+ +
+ + +
+
+
+
+
+
+
+

Challenge Notifications

@@ -673,6 +850,9 @@ export default function Create() { )}
+ + +

@@ -711,7 +891,7 @@ export default function Create() {



-
+


If you disagree with the changes, please join our
Discord and voice your opinion.

diff --git a/yarn.lock b/yarn.lock index 062215c..e9b8e35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4680,7 +4680,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-equals@^5.0.0: +fast-equals@^5.0.0, fast-equals@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== @@ -7159,7 +7159,7 @@ next@^14.0.2: "@next/swc-win32-ia32-msvc" "14.0.4" "@next/swc-win32-x64-msvc" "14.0.4" -node-fetch@^2.6.12: +node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -8042,6 +8042,15 @@ react-smooth@^2.0.2: fast-equals "^5.0.0" react-transition-group "2.9.0" +react-smooth@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-4.0.1.tgz#6200d8699bfe051ae40ba187988323b1449eab1a" + integrity sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w== + dependencies: + fast-equals "^5.0.1" + prop-types "^15.8.1" + react-transition-group "^4.4.5" + react-swipeable@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/react-swipeable/-/react-swipeable-7.0.1.tgz#cd299f5986c5e4a7ee979839658c228f660e1e0c" @@ -8143,7 +8152,21 @@ recharts-scale@^0.4.4: dependencies: decimal.js-light "^2.4.1" -recharts@^2.3.2, recharts@^2.5.0: +recharts@^2.12.7: + version "2.12.7" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.12.7.tgz#c7f42f473a257ff88b43d88a92530930b5f9e773" + integrity sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ== + dependencies: + clsx "^2.0.0" + eventemitter3 "^4.0.1" + lodash "^4.17.21" + react-is "^16.10.2" + react-smooth "^4.0.0" + recharts-scale "^0.4.4" + tiny-invariant "^1.3.1" + victory-vendor "^36.6.8" + +recharts@^2.3.2: version "2.7.2" resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.7.2.tgz#6d813681910ad33a4bbf3bdd06c6f64f20b39319" integrity sha512-HMKRBkGoOXHW+7JcRa6+MukPSifNtJlqbc+JreGVNA407VLE/vOP+8n3YYjprDVVIF9E2ZgwWnL3D7K/LUFzBg== @@ -9230,6 +9253,11 @@ through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tiny-invariant@^1.3.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + tippy.js@^6.3.1: version "6.3.7" resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"