import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { Link } from 'react-router'; import { defineMessages, intlShape } from 'react-intl'; import SearchInput from '../../ui/SearchInput'; import Infobox from '../../ui/Infobox'; import Loader from '../../ui/Loader'; import ServiceItem from './ServiceItem'; import Appear from '../../ui/effects/Appear'; const messages = defineMessages({ headline: { id: 'settings.services.headline', defaultMessage: '!!!Your services', }, noServicesAdded: { id: 'settings.services.noServicesAdded', defaultMessage: '!!!You haven\'t added any services yet.', }, discoverServices: { id: 'settings.services.discoverServices', defaultMessage: '!!!Discover services', }, servicesRequestFailed: { id: 'settings.services.servicesRequestFailed', defaultMessage: '!!!Could not load your services', }, tryReloadServices: { id: 'settings.account.tryReloadServices', defaultMessage: '!!!Try again', }, updatedInfo: { id: 'settings.services.updatedInfo', defaultMessage: '!!!Your changes have been saved', }, deletedInfo: { id: 'settings.services.deletedInfo', defaultMessage: '!!!Service has been deleted', }, }); @observer export default class ServicesDashboard extends Component { static propTypes = { services: MobxPropTypes.arrayOrObservableArray.isRequired, isLoading: PropTypes.bool.isRequired, toggleService: PropTypes.func.isRequired, filterServices: PropTypes.func.isRequired, resetFilter: PropTypes.func.isRequired, goTo: PropTypes.func.isRequired, servicesRequestFailed: PropTypes.bool.isRequired, retryServicesRequest: PropTypes.func.isRequired, status: MobxPropTypes.arrayOrObservableArray.isRequired, }; static contextTypes = { intl: intlShape, }; render() { const { services, isLoading, toggleService, filterServices, resetFilter, goTo, servicesRequestFailed, retryServicesRequest, status, } = this.props; const { intl } = this.context; return (
filterServices({ needle })} onReset={() => resetFilter()} />
{!isLoading && servicesRequestFailed && (
{intl.formatMessage(messages.servicesRequestFailed)}
)} {status.length > 0 && status.includes('updated') && ( {intl.formatMessage(messages.updatedInfo)} )} {status.length > 0 && status.includes('service-deleted') && ( {intl.formatMessage(messages.deletedInfo)} )} {!isLoading && services.length === 0 && (

{intl.formatMessage(messages.noServicesAdded)}

{intl.formatMessage(messages.discoverServices)}
)} {isLoading ? ( ) : ( {services.map(service => ( toggleService({ serviceId: service.id })} goToServiceForm={() => goTo(`/settings/services/edit/${service.id}`)} /> ))}
)}
); } }