From 69960b333b2adfa33312b936e9302c9d10f29a4c Mon Sep 17 00:00:00 2001 From: nicolinabl Date: Thu, 19 Feb 2026 13:36:38 +0100 Subject: [PATCH 1/2] CreateQuest form connected to backend. User can now create a quest and send to api --- frontend/src/components/CreateQuest.jsx | 88 +++++++++++++++++++++++-- frontend/src/components/LoginForm.jsx | 1 + frontend/src/components/SignupForm.jsx | 3 +- 3 files changed, 86 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/CreateQuest.jsx b/frontend/src/components/CreateQuest.jsx index c29b4b1c21..f773bb7859 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: [] + }) + }) + + 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 ( -
+