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 (
-