diff --git a/backend/index.js b/backend/index.js index 7176e57..0b85db2 100644 --- a/backend/index.js +++ b/backend/index.js @@ -8,7 +8,9 @@ connectToMongo(); // Middlewares app.use(cors()); -app.use(express.json()); +app.use(express.json({ + limit: '5.5mb' +})); // Routes app.get('/', (req, res) => { diff --git a/frontend/src/components/NewProj/NewProj.jsx b/frontend/src/components/NewProj/NewProj.jsx index 4e1b62b..6014aad 100644 --- a/frontend/src/components/NewProj/NewProj.jsx +++ b/frontend/src/components/NewProj/NewProj.jsx @@ -2,7 +2,10 @@ import { Suspense, useEffect, useState } from 'react'; import { json, useNavigate } from 'react-router-dom'; import Navbar from '../Navbar/Navbar'; import { Helmet } from "react-helmet"; -import './newproject.css' +import './newproject.css'; +import './newproject.css'; +import { ToastContainer, toast } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; const NewProj = () => { const [name, setName] = useState(""); @@ -20,7 +23,7 @@ const NewProj = () => { const [repoName, setRepoName] = useState("DevCode"); const [repoLink, setRepoLink] = useState("https://github.com/devarshishimpi/devcode"); const [level, setLevel] = useState(null); - const [image, setImage] = useState(); + const [image, setImage] = useState(null); const navigate = useNavigate(); @@ -32,6 +35,7 @@ const NewProj = () => { const formSubmit = async (e) => { e.preventDefault(); + const langArr = []; if (language1) { langArr.push("Javscript"); @@ -65,17 +69,62 @@ const NewProj = () => { } - const authtoken = localStorage.getItem('auth-token'); - const response = await fetch('http://localhost:8181/api/auth/uploadproject', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'auth-token': authtoken - }, - body: JSON.stringify({ name, description, langArr, repoName, repoLink, level, image }) - }); - const json = await response.json(); - console.log(json); + + if (name.trim() === "") { + toast.error('Please enter a valid project name'); + } + else if (description.trim() === "") { + toast.error('Please enter a valid description'); + } + // else if (!(language1 || language2 || language3 || language4 || language5 || language6 || language7 || language8 || language9 || language10)) { + // toast.error('Please select a valid language tag'); + // } + else if (langArr.length === 0) { + toast.error('Please select a valid language tag'); + } + else if (level.trim() === "") { + toast.error('Please select level of the project'); + } + else if (image === null) { + toast.error("Please upload a valid image"); + } + else { + const authtoken = localStorage.getItem('auth-token'); + const response = await fetch('http://localhost:8181/api/auth/uploadproject', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'auth-token': authtoken + }, + body: JSON.stringify({ name, description, langArr, repoName, repoLink, level, image }) + }); + const json = await response.json(); + if (json.success) { + setName(""); + setDescription(""); + setLanguage1(false); + setLanguage2(false); + setLanguage3(false); + setLanguage4(false); + setLanguage5(false); + setLanguage6(false); + setLanguage7(false); + setLanguage8(false); + setLanguage9(false); + setLanguage10(false); + setRepoName(""); + setRepoLink(""); + setLevel(""); + setImage(null); + + toast.success('Success! Your project has been submitted successfully'); + + setTimeout(() => { + navigate('/projects') + }, 1500); + } + console.log(json); + } } const handleImage = (e) => { @@ -104,7 +153,7 @@ const NewProj = () => {
-
+
setName(e.target.value)} type="text" id="base-input" class="border text-sm rounded-lg block w-full p-2.5 bg-gray-700 border-gray-600 placeholder-gray-400 outline-none text-white" placeholder="Project Title">
@@ -115,7 +164,7 @@ const NewProj = () => {
-
+ -
A project banner showcases a image banner with some info about your project.
+
A project banner showcases a image banner with some info about your project. Use a ratio of 100x42 for best results
@@ -196,6 +245,7 @@ const NewProj = () => {
+
) } diff --git a/frontend/src/components/Projects/Projects.jsx b/frontend/src/components/Projects/Projects.jsx index 5fd05aa..e2d94bb 100644 --- a/frontend/src/components/Projects/Projects.jsx +++ b/frontend/src/components/Projects/Projects.jsx @@ -46,7 +46,7 @@ const Projects = () => { {project.level === 2 && Intermediate} {project.level === 3 && Advance} {project.level === 4 && Expert} - Mountain + Mountain
{project.name}