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 Confetti from 'react-confetti'; import ms from 'ms'; import injectSheet from 'react-jss'; import ServiceView from './ServiceView'; import Appear from '../../ui/effects/Appear'; const messages = defineMessages({ welcome: { id: 'services.welcome', defaultMessage: '!!!Welcome to Franz', }, getStarted: { id: 'services.getStarted', defaultMessage: '!!!Get started', }, }); const styles = { confettiContainer: { position: 'absolute', width: '100%', zIndex: 0, }, }; export default @observer @injectSheet(styles) class Services extends Component { static propTypes = { services: MobxPropTypes.arrayOrObservableArray, setWebviewReference: PropTypes.func.isRequired, detachService: PropTypes.func.isRequired, handleIPCMessage: PropTypes.func.isRequired, openWindow: PropTypes.func.isRequired, reload: PropTypes.func.isRequired, openSettings: PropTypes.func.isRequired, update: PropTypes.func.isRequired, userHasCompletedSignup: PropTypes.bool.isRequired, classes: PropTypes.object.isRequired, }; static defaultProps = { services: [], }; static contextTypes = { intl: intlShape, }; state = { showConfetti: true, } componentDidMount() { window.setTimeout(() => { this.setState({ showConfetti: false, }); }, ms('8s')); } render() { const { services, handleIPCMessage, setWebviewReference, detachService, openWindow, reload, openSettings, update, userHasCompletedSignup, classes, } = this.props; const { showConfetti, } = this.state; const { intl } = this.context; return (
{services.length === 0 && ( <> {userHasCompletedSignup && (
)}

{intl.formatMessage(messages.welcome)}

{intl.formatMessage(messages.getStarted)}
)} {services.map(service => ( reload({ serviceId: service.id })} edit={() => openSettings({ path: `services/edit/${service.id}` })} enable={() => update({ serviceId: service.id, serviceData: { isEnabled: true, }, redirect: false, })} upgrade={() => openSettings({ path: 'user' })} /> ))}
); } }