import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, intlShape } from 'react-intl'; import { Link } from 'react-router'; import classnames from 'classnames'; import Form from '../../lib/Form'; import Toggle from '../ui/Toggle'; import Button from '../ui/Button'; const messages = defineMessages({ headline: { id: 'import.headline', defaultMessage: '!!!Import your Franz 4 services', }, notSupportedHeadline: { id: 'import.notSupportedHeadline', defaultMessage: '!!!Services not yet supported in Franz 5', }, submitButtonLabel: { id: 'import.submit.label', defaultMessage: '!!!Import {count} services', }, skipButtonLabel: { id: 'import.skip.label', defaultMessage: '!!!I want to add services manually', }, }); export default @observer class Import extends Component { static propTypes = { services: MobxPropTypes.arrayOrObservableArray.isRequired, onSubmit: PropTypes.func.isRequired, isSubmitting: PropTypes.bool.isRequired, inviteRoute: PropTypes.string.isRequired, }; static contextTypes = { intl: intlShape, }; componentWillMount() { const config = { fields: { import: [...this.props.services.filter(s => s.recipe).map(s => ({ fields: { add: { default: true, options: s, }, }, }))], }, }; this.form = new Form(config, this.context.intl); } submit(e) { const { services } = this.props; e.preventDefault(); this.form.submit({ onSuccess: (form) => { const servicesImport = form.values().import .map((value, i) => !value.add || services.filter(s => s.recipe)[i]) .filter(s => typeof s !== 'boolean'); this.props.onSubmit({ services: servicesImport }); }, onError: () => {}, }); } render() { const { intl } = this.context; const { services, isSubmitting, inviteRoute } = this.props; const availableServices = services.filter(s => s.recipe); const unavailableServices = services.filter(s => !s.recipe); return (
this.submit(e)}>

{intl.formatMessage(messages.headline)}

{this.form.$('import').map((service, i) => ( ))}
{availableServices[i].name !== '' ? availableServices[i].name : availableServices[i].recipe.name}
{unavailableServices.length > 0 && (
{intl.formatMessage(messages.notSupportedHeadline)}

{services.filter(s => !s.recipe).map((service, i) => ( {service.name !== '' ? service.name : service.service} {unavailableServices.length > i + 1 ? ', ' : ''} ))}

)} {isSubmitting ? (
); } }