import React from 'react'; import { Button, Tab } from 'semantic-ui-react'; import { Form, withFormik } from 'formik'; import { History } from 'history'; import TxButton from '@polkadot/joy-utils/TxButton'; import { ContentId } from '@joystream/types/media'; import { onImageError } from '@polkadot/joy-utils/images'; import { MusicTrackValidationSchema, MusicTrackType, MusicTrackClass as Fields, MusicTrackFormValues, MusicTrackToFormValues } from '../schemas/music/MusicTrack'; import { withMediaForm, MediaFormProps, datePlaceholder } from '../common/MediaForms'; import EntityId from '@joystream/types/versioned-store/EntityId'; import { MediaDropdownOptions } from '../common/MediaDropdownOptions'; import { FormTabs } from '../common/FormTabs'; export type OuterProps = { history?: History, contentId: ContentId, fileName?: string, id?: EntityId, entity?: MusicTrackType opts?: MediaDropdownOptions }; type FormValues = MusicTrackFormValues; const InnerForm = (props: MediaFormProps) => { const { // React components for form fields: MediaText, MediaDropdown, LabelledField, // Callbacks: onSubmit, onTxSuccess, onTxFailed, // history, // contentId, entity, opts = MediaDropdownOptions.Empty, // Formik stuff: values, dirty, errors, isValid, isSubmitting, resetForm } = props; const { thumbnail } = values; const isNew = !entity; const buildTxParams = () => { if (!isValid) return []; return [ /* TODO save entity to versioned store */ ]; }; const basicInfoTab = () => const additionalTab = () => const tabs = ; const renderMainButton = () => return
{thumbnail && }
{tabs} {renderMainButton()}
; }; export const EditForm = withFormik({ // Transform outer props into form values mapPropsToValues: (props): FormValues => { const { entity, fileName } = props; const res = MusicTrackToFormValues(entity); if (!res.title && fileName) { res.title = fileName; } return res; }, validationSchema: () => MusicTrackValidationSchema, handleSubmit: () => { // do submitting things } })(withMediaForm(InnerForm) as any); export default EditForm;