import React from "react" import * as antd from "antd" import { Icons } from "@components/Icons" import MusicModel from "@models/music" import { DefaultReleaseEditorState, ReleaseEditorStateContext } from "@contexts/MusicReleaseEditor" import Tabs from "./tabs" import "./index.less" const ReleaseEditor = (props) => { const { release_id } = props const basicInfoRef = React.useRef() const [loading, setLoading] = React.useState(true) const [loadError, setLoadError] = React.useState(null) const [globalState, setGlobalState] = React.useState(DefaultReleaseEditorState) const [selectedTab, setSelectedTab] = React.useState("info") async function initialize() { setLoading(true) setLoadError(null) if (release_id !== "new") { try { const releaseData = await MusicModel.getReleaseData(release_id) setGlobalState({ ...globalState, ...releaseData, }) } catch (error) { setLoadError(error) } } setLoading(false) } async function handleSubmit() { console.log("Submit >", globalState) } async function onFinish(values) { console.log(values) } async function canFinish() { return true } React.useEffect(() => { initialize() }, []) if (loadError) { return } if (loading) { return } const Tab = Tabs.find(({ key }) => key === selectedTab) return
setSelectedTab(e.key)} selectedKeys={[selectedTab]} items={Tabs} mode="vertical" />
} disabled={loading || !canFinish()} > Save { release_id !== "new" ? } disabled={loading} > Delete : null } { release_id !== "new" ? } onClick={() => app.location.push(`/music/release/${globalState._id}`)} > Go to release : null }
{ !Tab && } { Tab && React.createElement(Tab.render, { release: globalState, onFinish: onFinish, state: globalState, setState: setGlobalState, references: { basic: basicInfoRef } }) }
} export default ReleaseEditor