import React, { useState, useMemo, useEffect } from "react"; import { Form, Radio, Button, message } from "antd"; import { TrackForm } from "./manage-store/TrackForm"; import { AddArtistForm } from "./manage-store/AddArtistForm"; import { AddAlbumForm } from "./manage-store/AddAlbumForm"; import { useErrors } from "../hooks/useErrors"; import { useAppState } from "../hooks/useAppState"; import { addTrack, addArtist, addAlbum } from "../api/calls"; import { MESSAGE_TIMEOUT } from "../util/constants"; const FORM_TYPES = { track: "track", artist: "artist", album: "album", playlist: "", }; const chooseForm = (type) => { return ( (type === "track" && ) || (type === "artist" && ) || (type === "album" && ) ); }; const ManageStore = () => { const [form] = Form.useForm(); const { handleError } = useErrors(); const { setLoading } = useAppState(); const [formType, setFormType] = useState("track"); useEffect(() => { form.resetFields(); }, [formType]); const formElement = useMemo(() => { return chooseForm(formType); }, [formType]); const onChangeForm = (event) => { setFormType(event.target.value); }; const sendCreateRequest = ({ type, ...data }) => { setLoading(true); let promise; switch (type) { case FORM_TYPES.track: promise = addTrack({ name: data.name, composer: data.composer, album: { ID: data.albumID }, genre: { ID: data.genreID }, unitPrice: data.unitPrice.toString(), }); break; case FORM_TYPES.artist: promise = addArtist(data); break; case FORM_TYPES.album: promise = addAlbum({ title: data.name, artist: { ID: data.artistID } }); break; default: } promise .then(() => { message.success("Entity successfully created", MESSAGE_TIMEOUT); form.resetFields(); }) .catch(handleError) .finally(() => setLoading(false)); }; return (
console.log("Not valid params provided")} > Track Album Artist {formElement}
); }; export { ManageStore };