diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 5c7cdba0cc..7a56914a8e 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -10,10 +10,13 @@ import { GlobalStyle } from "./styles/GlobalStyles"; import { Signup } from "./pages/SignupPage"; import { useEffect, useState } from "react"; import { apiUrl } from "../api"; +import { Navbar } from "./components/Navbar"; export const App = () => { + const [user, setUser] = useState(null) const [data, setData] = useState(null); + // TODO remove? useEffect(() => { const fetchData = async () => { try { @@ -29,16 +32,41 @@ export const App = () => { fetchData(); }, []); + useEffect(() => { + const accessToken = localStorage.getItem('accessToken') + const userId = localStorage.getItem('userId') + const userEmail = localStorage.getItem('userEmail') + const userName = localStorage.getItem('userName') + + if (accessToken && userId) { + setUser({ + accessToken, + userId, + email: userEmail, + name: userName + }) + } + }, []) + + const handleLogout = () => { + setUser(null) + localStorage.removeItem('accessToken') + localStorage.removeItem('userId') + localStorage.removeItem('userEmail') + localStorage.removeItem('userName') + } + return ( <> + } /> } /> } /> } /> } /> - } /> + } /> } /> } /> diff --git a/frontend/src/components/CreateQuest.jsx b/frontend/src/components/CreateQuest.jsx index c29b4b1c21..7af3c3fdaf 100644 --- a/frontend/src/components/CreateQuest.jsx +++ b/frontend/src/components/CreateQuest.jsx @@ -1,18 +1,96 @@ import styled from 'styled-components' +import { useState } from 'react' +import { apiUrl } from '../../api' +// component for creating quest export const CreateQuest = () => { + // state variables for form inputs + const [message, setMessage] = useState('') + const [timeNeeded, setTimeNeeded] = useState('') + const [category, setCategory] = useState('') + const [error, setError] = useState(null) + + // Handle form submission + const handleSubmit = async (event) => { + event.preventDefault() + setError(null) + + // get the users accesstoken from localStorage (saved during login/signup) + const accessToken = localStorage.getItem('accessToken') + + if (!accessToken) { + setError('You must be logged in to create a quest') + return + } + + try { + // POST request for creating a new quest + const response = await fetch(apiUrl + '/quests', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': accessToken + }, + body: JSON.stringify({ + message, + timeNeeded: Number(timeNeeded), + category: [category] + }) + }) + + const data = await response.json() + + if (!response.ok) { + setError(data.message || 'Failed to create quest') + return + } + + console.log('Quest created:', data) + + // After form i submitted, clear the input field + setMessage('') + setTimeNeeded('') + setCategory('') + } catch (error) { + console.error('Error:', error) + setError('Something went wrong. Please try again.') + } +} + return ( -
+