From 79d2dd4bf3f9113d3bbb589caced34ceeaa07e90 Mon Sep 17 00:00:00 2001 From: "deepsource-autofix[bot]" <62050782+deepsource-autofix[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 15:52:23 +0000 Subject: [PATCH] style: format code with StandardJS This commit fixes the style issues introduced in 5fac355 according to the output from StandardJS. Details: None --- src/pages/users/[user].jsx | 2195 ++++++++++++++++++------------------ 1 file changed, 1088 insertions(+), 1107 deletions(-) diff --git a/src/pages/users/[user].jsx b/src/pages/users/[user].jsx index fb424250..24e08a9f 100644 --- a/src/pages/users/[user].jsx +++ b/src/pages/users/[user].jsx @@ -1,1203 +1,1184 @@ -import Head from 'next/head'; -import { useState, useEffect, useRef } from 'react'; -import { Context } from '@/context'; -import { useContext } from 'react'; -import dynamic from 'next/dynamic'; -import { StandardNav } from '@/components/StandardNav'; -import { Footer } from '@/components/Footer'; -import request from '@/utils/request'; -import { MarkdownViewer } from '@/components/MarkdownViewer'; -import { useRouter } from 'next/router'; -import CreatedChallenges from '@/components/profile/v2/CreatedChallenges'; -import SolvedChallenges from '@/components/profile/v2/SolvedChallenges'; -import Badges from '@/components/profile/v2/Badges'; -import Writeups from '@/components/profile/v2/Writeups'; -import Skeleton from 'react-loading-skeleton'; -import 'react-loading-skeleton/dist/skeleton.css'; -import ActivityCalendar from 'react-activity-calendar'; -import { Pie } from 'react-chartjs-2'; -import Followers from '@/components/profile/Followers'; -import Following from '@/components/profile/Following'; -import { Radar } from 'react-chartjs-2'; -import { Chart as ChartJS, RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ArcElement } from 'chart.js'; -import { buildStyles } from 'react-circular-progressbar'; -import 'react-circular-progressbar/dist/styles.css'; -//toast -import { toast, ToastContainer } from 'react-toastify'; -import 'react-toastify/dist/ReactToastify.css'; - +import Head from 'next/head' +import { useState, useEffect, useRef, useContext } from 'react' +import { Context } from '@/context' +import dynamic from 'next/dynamic' +import { StandardNav } from '@/components/StandardNav' +import { Footer } from '@/components/Footer' +import request from '@/utils/request' +import { MarkdownViewer } from '@/components/MarkdownViewer' +import { useRouter } from 'next/router' +import CreatedChallenges from '@/components/profile/v2/CreatedChallenges' +import SolvedChallenges from '@/components/profile/v2/SolvedChallenges' +import Badges from '@/components/profile/v2/Badges' +import Writeups from '@/components/profile/v2/Writeups' +import Skeleton from 'react-loading-skeleton' +import 'react-loading-skeleton/dist/skeleton.css' +import ActivityCalendar from 'react-activity-calendar' +import { Pie, Radar } from 'react-chartjs-2' +import Followers from '@/components/profile/Followers' +import Following from '@/components/profile/Following' +import { Chart as ChartJS, RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ArcElement } from 'chart.js' +import { buildStyles } from 'react-circular-progressbar' +import 'react-circular-progressbar/dist/styles.css' +// toast +import { toast, ToastContainer } from 'react-toastify' +import 'react-toastify/dist/ReactToastify.css' // Register the necessary chart components -ChartJS.register(RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ArcElement); +ChartJS.register(RadialLinearScale, PointElement, LineElement, Filler, Tooltip, Legend, ArcElement) const mockActivityData = [ - { date: '2024-01-01', count: 0, level: 0 }, - { date: '2024-12-21', count: 0, level: 0 }, -]; + { date: '2024-01-01', count: 0, level: 0 }, + { date: '2024-12-21', count: 0, level: 0 } +] -const baseUrl = process.env.NEXT_PUBLIC_BASE_URL; +const baseUrl = process.env.NEXT_PUBLIC_BASE_URL // Custom Multi-colored Circular Progress Bar Component const MultiColorCircularProgressBar = ({ segments }) => { - const radius = 50; - const circumference = 2 * Math.PI * radius; - let offset = 0; - - return ( - - - {segments.map((segment, index) => { - const segmentLength = (segment.value / 100) * circumference; - const strokeDasharray = `${segmentLength} ${circumference - segmentLength}`; - const strokeDashoffset = offset; - offset -= segmentLength; - - return ( - - ); - })} - - ); -}; - -export default function Create() { - const bioRef = useRef(null); - const toolKitRef = useRef(null) - const saveRef = useRef(null) - const bioContainerRef = useRef(null) - const router = useRouter(); - const [user, setUser] = useState(null); - const [activeTab, setActiveTab] = useState('LIKED CHALLENGES'); - const [isBioExpanded, setIsBioExpanded] = useState(false); - const [followerNum, setFollowerNum] = useState(0); - const [followingNum, setFollowingNum] = useState(0); - const [activityData, setActivityData] = useState(mockActivityData); - const [completedChallenges, setCompletedChallenges] = useState(null); - let [totalCompletedChallenges, setTotalCompletedChallenges] = useState(0); - const [unsavedNotif, setOpenBio] = useState(false); - const [banner, bannerState] = useState(false); - const [inputText, setInputText] = useState(''); - const [currentUsersBio, setCurrentUsersBio] = useState(null); - - const [completionData, setCompletionData] = useState([ - { - name: 'Beginner', - amount: 0, - color: 'bg-blue-500', - }, - { - name: 'Easy', - amount: 0, - color: 'bg-green-500', - }, - { - name: 'Medium', - amount: 0, - color: 'bg-orange-500', - }, - { - name: 'Hard', - amount: 0, - color: 'bg-red-500', - }, - { - name: 'Insane', - amount: 0, - color: 'bg-purple-500', - }, - ]); - - const [displayMode, setDisplayMode] = useState('default'); - const [mutuals, setMutuals] = useState([]); - const [ownUser, setOwnUser] = useState(false); - const [followedUser, setFollowedUser] = useState(false); - const [followers, setFollowers] = useState(0); - const [followerPage, setFollowerPage] = useState(0); // Initial page - const [totalFollowerPages, setTotalFollowerPages] = useState(0); // Total pages - - const [following, setFollowing] = useState(0); - const [followingPage, setFollowingPage] = useState(0); // Initial page - const [totalFollowingPages, setTotalFollowingPages] = useState(0); // Total pages - - const [categoryChallenges, setCategoryChallenges] = useState([]); - const [rank, setRank] = useState(null); - - function closeUnsavedNotif() { - bannerState(false); - setIsBioExpanded(false); + const radius = 50 + const circumference = 2 * Math.PI * radius + let offset = 0 + + return ( + + + {segments.map((segment, index) => { + const segmentLength = (segment.value / 100) * circumference + const strokeDasharray = `${segmentLength} ${circumference - segmentLength}` + const strokeDashoffset = offset + offset -= segmentLength + + return ( + + ) + })} + + ) +} + +export default function Create () { + const bioRef = useRef(null) + const toolKitRef = useRef(null) + const saveRef = useRef(null) + const bioContainerRef = useRef(null) + const router = useRouter() + const [user, setUser] = useState(null) + const [activeTab, setActiveTab] = useState('LIKED CHALLENGES') + const [isBioExpanded, setIsBioExpanded] = useState(false) + const [followerNum, setFollowerNum] = useState(0) + const [followingNum, setFollowingNum] = useState(0) + const [activityData, setActivityData] = useState(mockActivityData) + const [completedChallenges, setCompletedChallenges] = useState(null) + const [totalCompletedChallenges, setTotalCompletedChallenges] = useState(0) + const [unsavedNotif, setOpenBio] = useState(false) + const [banner, bannerState] = useState(false) + const [inputText, setInputText] = useState('') + const [currentUsersBio, setCurrentUsersBio] = useState(null) + + const [completionData, setCompletionData] = useState([ + { + name: 'Beginner', + amount: 0, + color: 'bg-blue-500' + }, + { + name: 'Easy', + amount: 0, + color: 'bg-green-500' + }, + { + name: 'Medium', + amount: 0, + color: 'bg-orange-500' + }, + { + name: 'Hard', + amount: 0, + color: 'bg-red-500' + }, + { + name: 'Insane', + amount: 0, + color: 'bg-purple-500' } + ]) + + const [displayMode, setDisplayMode] = useState('default') + const [mutuals, setMutuals] = useState([]) + const [ownUser, setOwnUser] = useState(false) + const [followedUser, setFollowedUser] = useState(false) + const [followers, setFollowers] = useState(0) + const [followerPage, setFollowerPage] = useState(0) // Initial page + const [totalFollowerPages, setTotalFollowerPages] = useState(0) // Total pages + + const [following, setFollowing] = useState(0) + const [followingPage, setFollowingPage] = useState(0) // Initial page + const [totalFollowingPages, setTotalFollowingPages] = useState(0) // Total pages + + const [categoryChallenges, setCategoryChallenges] = useState([]) + const [rank, setRank] = useState(null) + + function closeUnsavedNotif () { + bannerState(false) + setIsBioExpanded(false) + } + + const handleInputChange = (event) => { + setInputText(event.target.value) + if (event.target.value !== '') { + bannerState(true) + } else { + bannerState(false) + } + } + const handleBioChange = (event) => { + handleInputChange(event) + setCurrentUsersBio(event.target.value) + } - const handleInputChange = (event) => { - setInputText(event.target.value); - if (event.target.value !== '') { - bannerState(true); - } else { - bannerState(false) - } - }; - - - const handleBioChange = (event) =>{ - handleInputChange(event); - setCurrentUsersBio(event.target.value); - } - - - function openBioEditor(){ - if(isBioExpanded === false){ - setIsBioExpanded(true); - console.log(isBioExpanded) - } - - }; - - function closeBioEditor () { - setIsBioExpanded(false); - console.log(isBioExpanded) - }; - - const renderContent = () => { - switch (activeTab) { - case 'SOLVED CHALLENGES': - return ( - <> -

SOLVED CHALLENGES

- {user && } - - ); - case 'WRITEUPS': - return ( - <> -

WRITEUPS

- {user && } - - ); - case 'CREATED CHALLENGES': - return ( - <> -

- CREATED CHALLENGES -

- - - ); - case 'BADGES': - return ( - <> -

BADGES

- - - ); - default: - return null; - } - }; - + function openBioEditor () { + if (isBioExpanded === false) { + setIsBioExpanded(true) + console.log(isBioExpanded) + } + }; + + function closeBioEditor () { + setIsBioExpanded(false) + console.log(isBioExpanded) + }; + + const renderContent = () => { + switch (activeTab) { + case 'SOLVED CHALLENGES': + return ( + <> +

SOLVED CHALLENGES

+ {user && } + + ) + case 'WRITEUPS': + return ( + <> +

WRITEUPS

+ {user && } + + ) + case 'CREATED CHALLENGES': + return ( + <> +

+ CREATED CHALLENGES +

+ + + ) + case 'BADGES': + return ( + <> +

BADGES

+ + + ) + default: + return null + } + } - const handleClickOutside = (event) => { - - if ( (bioRef.current && !bioRef.current.contains(event.target)) && + const handleClickOutside = (event) => { + if ((bioRef.current && !bioRef.current.contains(event.target)) && (toolKitRef.current && !toolKitRef.current.contains(event.target)) && - (!saveRef.current || (saveRef.current && !saveRef.current.contains(event.target)))) - { - setIsBioExpanded(false); - bannerState(false); - } - - }; - - - - useEffect(() => { - if (router.query.user) { - request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}`, 'GET', null) - .then((data) => { - setUser(data); - const storedUser = localStorage.getItem('username'); - if (storedUser && (storedUser === router.query.user)) { - setOwnUser(true); - console.log("USER IS OWN USER"); - } else { - fetchIsFollowing(); - setOwnUser(false); - console.log("USER IS NOT OWN USER") - } - setActiveTab('SOLVED CHALLENGES'); - renderContent(); - }) - .catch((err) => { - console.log(err); - }); - - request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/rank`, 'GET', null) - .then((data) => { - if (data.rank == "User not found in the ranking") { - setRank("???"); - } else { - setRank(data.rank); - } - }) - .catch((err) => { - console.log(err); - }); - } - }, [router.query.user]); + (!saveRef.current || (saveRef.current && !saveRef.current.contains(event.target)))) { + setIsBioExpanded(false) + bannerState(false) + } + } + + useEffect(() => { + if (router.query.user) { + request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}`, 'GET', null) + .then((data) => { + setUser(data) + const storedUser = localStorage.getItem('username') + if (storedUser && (storedUser === router.query.user)) { + setOwnUser(true) + console.log('USER IS OWN USER') + } else { + fetchIsFollowing() + setOwnUser(false) + console.log('USER IS NOT OWN USER') + } + setActiveTab('SOLVED CHALLENGES') + renderContent() + }) + .catch((err) => { + console.log(err) + }) + + request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/rank`, 'GET', null) + .then((data) => { + if (data.rank == 'User not found in the ranking') { + setRank('???') + } else { + setRank(data.rank) + } + }) + .catch((err) => { + console.log(err) + }) + } + }, [router.query.user]) - useEffect(() => { - const fetchActivityData = async () => { - try { - const response = await request( + useEffect(() => { + const fetchActivityData = async () => { + try { + const response = await request( `${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/activity`, 'GET', null - ); - //setActivityData(response.data); - } catch (err) { - console.log(err); - } - }; - - const fetchChallenges = async () => { - try { - const resp = await request( + ) + // setActivityData(response.data); + } catch (err) { + console.log(err) + } + } + + const fetchChallenges = async () => { + try { + const resp = await request( `${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/completedChallenges`, 'GET', null - ); - if (resp) { - setCompletedChallenges(resp); - console.log('setting resp'); - } - setTotalCompletedChallenges( - resp.beginnerChallenges.length + + ) + if (resp) { + setCompletedChallenges(resp) + console.log('setting resp') + } + setTotalCompletedChallenges( + resp.beginnerChallenges.length + resp.easyChallenges.length + resp.mediumChallenges.length + resp.hardChallenges.length + resp.insaneChallenges.length - ); - console.log('completed challenges: ', completedChallenges); - setCompletionData([ - { - name: 'Beginner', - amount: resp.beginnerChallenges.length, - color: 'bg-blue-500', - }, - { - name: 'Easy', - amount: resp.easyChallenges.length, - color: 'bg-green-500', - }, - { - name: 'Medium', - amount: resp.mediumChallenges.length, - color: 'bg-orange-500', - }, - { - name: 'Hard', - amount: resp.hardChallenges.length, - color: 'bg-red-500', - }, - { - name: 'Insane', - amount: resp.insaneChallenges.length, - color: 'bg-purple-500', - }, - ]); - } catch (err) { - console.log(err); - } - }; - const fetchCategories = async () => { - try { - const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/completedCategory`, 'GET', null); - if (response) { - const categories = [ - { name: 'Forensics', completed: response.forensicsChallenges.length }, - { name: 'Crypto', completed: response.cryptographyChallenges.length }, - { name: 'RE', completed: response.reverseEngineeringChallenges.length }, - { name: 'Web', completed: response.webChallenges.length }, - { name: 'Pwn', completed: response.pwnChallenges.length }, - { name: 'Pgrming', completed: response.programmingChallenges.length }, - { name: 'Basic', completed: response.basicChallenges.length }, - { name: 'Other', completed: response.otherChallenges.length }, - ]; - setCategoryChallenges(categories); - } else { - setCategoryChallenges([]); - } - } catch (err) { - console.log(err); - setCategoryChallenges([]); - } - }; - - const fetchUserData = async () => { - try { - const response = await request( - `${process.env.NEXT_PUBLIC_API_URL}/account`, - 'GET', - null - ); - const userData = await response; - - // Set the fetched data into the state - setCurrentUsersBio(userData.bio || ''); - - } catch (err) { - console.error('Failed to fetch user data', err); - } - }; - fetchUserData(); - fetchCategories(); - fetchChallenges(); - fetchActivityData(); - - if (isBioExpanded) { - document.addEventListener('mousedown', handleClickOutside); - } else { - document.removeEventListener('mousedown', handleClickOutside); + ) + console.log('completed challenges: ', completedChallenges) + setCompletionData([ + { + name: 'Beginner', + amount: resp.beginnerChallenges.length, + color: 'bg-blue-500' + }, + { + name: 'Easy', + amount: resp.easyChallenges.length, + color: 'bg-green-500' + }, + { + name: 'Medium', + amount: resp.mediumChallenges.length, + color: 'bg-orange-500' + }, + { + name: 'Hard', + amount: resp.hardChallenges.length, + color: 'bg-red-500' + }, + { + name: 'Insane', + amount: resp.insaneChallenges.length, + color: 'bg-purple-500' } - - return () => { - document.removeEventListener('mousedown', handleClickOutside); - }; - - - }, [router.query.user, isBioExpanded]); - - const insertText = (text) => { - const textarea = bioRef.current; - const startPos = textarea.selectionStart; - const endPos = textarea.selectionEnd; - const newValue = - textarea.value.substring(0, startPos) + - text + - textarea.value.substring(endPos, textarea.value.length); - setCurrentUsersBio(newValue); - textarea.focus(); - textarea.selectionEnd = startPos + text.length; - bannerState(true); - }; - - const magicSnippet = () => { - const id = Math.random().toString(36).substring(7); - insertText(`[Click to run: ${id}](https://ctfguide.com/magic/)`); - }; - - - function bioViewCheck(){ - if((useContext(Context).username) === (user && user.username)){ - return true; - }else{ - return false; + ]) + } catch (err) { + console.log(err) + } + } + const fetchCategories = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/users/${router.query.user}/completedCategory`, 'GET', null) + if (response) { + const categories = [ + { name: 'Forensics', completed: response.forensicsChallenges.length }, + { name: 'Crypto', completed: response.cryptographyChallenges.length }, + { name: 'RE', completed: response.reverseEngineeringChallenges.length }, + { name: 'Web', completed: response.webChallenges.length }, + { name: 'Pwn', completed: response.pwnChallenges.length }, + { name: 'Pgrming', completed: response.programmingChallenges.length }, + { name: 'Basic', completed: response.basicChallenges.length }, + { name: 'Other', completed: response.otherChallenges.length } + ] + setCategoryChallenges(categories) + } else { + setCategoryChallenges([]) } + } catch (err) { + console.log(err) + setCategoryChallenges([]) } + } - const renderEditButton = () => { - return<> - {!isBioExpanded && } - + // Set the fetched data into the state + setCurrentUsersBio(userData.bio || '') + } catch (err) { + console.error('Failed to fetch user data', err) } + } + fetchUserData() + fetchCategories() + fetchChallenges() + fetchActivityData() + + if (isBioExpanded) { + document.addEventListener('mousedown', handleClickOutside) + } else { + document.removeEventListener('mousedown', handleClickOutside) + } + return () => { + document.removeEventListener('mousedown', handleClickOutside) + } + }, [router.query.user, isBioExpanded]) - const renderUsersBio = () =>{ - return<> -
- - -
- {isBioExpanded ? <> -
- -
- -
-
- - + const insertText = (text) => { + const textarea = bioRef.current + const startPos = textarea.selectionStart + const endPos = textarea.selectionEnd + const newValue = + textarea.value.substring(0, startPos) + + text + + textarea.value.substring(endPos, textarea.value.length) + setCurrentUsersBio(newValue) + textarea.focus() + textarea.selectionEnd = startPos + text.length + bannerState(true) + } + + const magicSnippet = () => { + const id = Math.random().toString(36).substring(7) + insertText(`[Click to run: ${id}](https://ctfguide.com/magic/)`) + } + + function bioViewCheck () { + if ((useContext(Context).username) === (user && user.username)) { + return true + } else { + return false + } + } - + const renderEditButton = () => { + return ( + <> + {!isBioExpanded && } + + ) + } + + const renderUsersBio = () => { + return ( + <> +
+
+ {isBioExpanded + ? <> +
- +
+
+
+ - + + - + + - -
- - - -
-