diff --git a/backend/controllers/events.js b/backend/controllers/events.js index 565cb6f..4eb06e4 100644 --- a/backend/controllers/events.js +++ b/backend/controllers/events.js @@ -3,6 +3,8 @@ var db = require('../db'); var mongoose = require("mongoose"); var Event = require("../models/event"); var { callModel: Call, callSchema } = require("../models/call"); +var frontend_server = process.env['REACT_APP_FRONTEND_SERVER'] != null ? process.env['REACT_APP_FRONTEND_SERVER'] : 'https://openmhz.com'; + exports.getEvent = async function (req, res, next) { @@ -78,17 +80,16 @@ exports.addNewEvent = async function (req, res, next) { }); event.calls = calls; event.numCalls = calls.length; - console.log(await event.save()); + await event.save(); + + const url = "/events/" + event._id; res.contentType('json'); - res.send(JSON.stringify({ - success: false, - error: "Upload failed" - })); + res.send(JSON.stringify({url:url})); } catch (err) { console.error(err); res.status(500); - res.send("Error parsing sourcelist " + err); + res.send("Error creating event" + err); } diff --git a/frontend/src/Call/components/PlaylistBuilder.js b/frontend/src/Call/components/PlaylistBuilder.js index 14513a1..2cc9a2d 100644 --- a/frontend/src/Call/components/PlaylistBuilder.js +++ b/frontend/src/Call/components/PlaylistBuilder.js @@ -1,5 +1,5 @@ import { useSelector, useDispatch } from 'react-redux' -import { useParams } from 'react-router-dom'; +import { Link, useParams } from 'react-router-dom'; import React, { useState } from "react"; import { Header, @@ -28,6 +28,10 @@ function PlaylistBuilder(props) { const [addNewEvent, { isLoading }] = useAddNewEventMutation() const { loading: callsLoading, data: callsData } = useSelector((state) => state.calls); const [open, setOpen] = React.useState(false); + const [successModalOpen, setSuccessModalOpen] = useState(false); + const [eventUrl, setEventUrl] = useState(""); + const [eventPath, setEventPath] = useState(""); + const [submitMessage, setSubmitMessage] = useState(false); const [title, setTitle] = useState("") const [description, setDescription] = useState("") const handleTitleChange = (e, { name, value }) => setTitle(value); @@ -84,22 +88,37 @@ function PlaylistBuilder(props) { }) const submitPlaylist = () => { + setSubmitMessage(false); setOpen(true) } - const handleSubmit = () => { - setOpen(false) + const handleSubmit = async () => { + if ((title.length < 3) || (description.length < 3)) { + setSubmitMessage("Please fill out the title and description with something useful"); + } else { + setOpen(false); const callIds = playlist.map((call) => call._id) const event = { title, description, callIds } - addNewEvent(event); + try { + const returned = await addNewEvent(event).unwrap(); + console.log(returned); + setEventUrl(new URL(returned.url, document.baseURI).href) + setEventPath(returned.url); + setSuccessModalOpen(true); + } catch (error) { + console.error(error) + // you can handle errors here if you want to + } + setTitle(""); setDescription(""); dispatch(setPlaylist([])); } + } let content = (
Drag Calls Here
) if (playlist.length > 0) { @@ -112,10 +131,28 @@ function PlaylistBuilder(props) { return ( <> + setSuccessModalOpen(false)} + size='tiny' + > + Event Successfully Created + Your Event is here:

{eventUrl}

+ + +