diff --git a/SerpentRace_Frontend/src/api/deckApi.js b/SerpentRace_Frontend/src/api/deckApi.js new file mode 100644 index 00000000..b322caab --- /dev/null +++ b/SerpentRace_Frontend/src/api/deckApi.js @@ -0,0 +1,15 @@ +import { apiClient } from './userApi' + +// Create a new deck in the backend +export const createDeck = async (deck) => { + try { + const response = await apiClient.post('/decks', deck) + return response.data + } catch (err) { + throw err + } +} + +export default { + createDeck +} diff --git a/SerpentRace_Frontend/src/api/userApi.js b/SerpentRace_Frontend/src/api/userApi.js index 7b4dc6e7..c39a7136 100644 --- a/SerpentRace_Frontend/src/api/userApi.js +++ b/SerpentRace_Frontend/src/api/userApi.js @@ -1,7 +1,7 @@ import axios from "axios" export const API_CONFIG = { - baseURL: import.meta.env.VITE_API_URL + "/api", + baseURL: (import.meta.env.VITE_API_URL ? import.meta.env.VITE_API_URL : '') + "/api", wsURL: "http://localhost:3000", timeout: 10000, retryAttempts: 3, diff --git a/SerpentRace_Frontend/src/pages/DeckCreator/DeckCreator.jsx b/SerpentRace_Frontend/src/pages/DeckCreator/DeckCreator.jsx index 3f76ca20..78032b44 100644 --- a/SerpentRace_Frontend/src/pages/DeckCreator/DeckCreator.jsx +++ b/SerpentRace_Frontend/src/pages/DeckCreator/DeckCreator.jsx @@ -7,6 +7,7 @@ import Navbar from "../../components/Navbar/Navbar.jsx" import DeckHeader from "../../components/DeckCreator/DeckHeader.jsx" import CardsList from "../../components/DeckCreator/CardsList.jsx" import CardEditor from "../../components/DeckCreator/CardEditor.jsx" +import { createDeck } from '../../api/deckApi' export default function DeckCreator() { const { deckId } = useParams() // URL-ből deck ID (új deck esetén undefined) @@ -86,12 +87,23 @@ export default function DeckCreator() { const handleSaveDeck = async () => { try { - // TODO: API mentés console.log("Deck mentése:", deck) - alert("✅ Deck sikeresen mentve!") + + const payload = { + name: deck.name, + type: (deck.type || 'Question').toString().toUpperCase(), + ctype: deck.privacy === 'public' ? 'PUBLIC' : 'PRIVATE', + description: deck.description || '', + cards: deck.cards.map(c => ({ ...c, text: c.question || c.statement || c.text || '' })) + } + + const saved = await createDeck(payload) + setDeck(prev => ({ ...prev, id: saved.id ?? prev.id, creationdate: saved.creationdate ?? prev.creationdate, updatedate: saved.updatedate ?? prev.updatedate })) + console.log('Deck saved (backend):', saved) + alert('✅ Deck sikeresen mentve!') } catch (error) { - console.error("Mentési hiba:", error) - alert("❌ Hiba történt a mentés során!") + console.error('Mentési hiba:', error) + alert('❌ Hiba történt a mentés során: ' + (error?.response?.data?.error || error.message || String(error))) } }