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 (
Track
Album
Artist
{formElement}
);
};
export { ManageStore };