import classNames from 'classnames'; import {Actions, React, Utils} from 'nylas-exports'; import InitialSyncActivity from './initial-sync-activity'; import SyncbackActivity from './syncback-activity'; export default class SyncActivity extends React.Component { static propTypes = { initialSync: React.PropTypes.bool, syncbackTasks: React.PropTypes.array, } constructor() { super() this.state = { expanded: false, blink: false, } this.mounted = false; } componentDidMount() { this.mounted = true; this.unsub = Actions.expandInitialSyncState.listen(this.showExpandedState); } shouldComponentUpdate(nextProps, nextState) { return !Utils.isEqualReact(nextProps, this.props) || !Utils.isEqualReact(nextState, this.state); } componentWillUnmount() { this.mounted = false; this.unsub(); } showExpandedState = () => { if (!this.state.expanded) { this.setState({expanded: true}); } else { this.setState({blink: true}); setTimeout(() => { if (this.mounted) { this.setState({blink: false}); } }, 1000) } } hideExpandedState = () => { this.setState({expanded: false}); } _renderInitialSync() { if (!this.props.initialSync) { return false; } return } _renderSyncbackTasks() { return } _renderExpandedDetails() { return (
Hide {this._renderSyncbackTasks()} {this._renderInitialSync()}
) } render() { const {initialSync, syncbackTasks} = this.props; if (!initialSync && (!syncbackTasks || syncbackTasks.length === 0)) { return false; } const classSet = classNames({ 'item': true, 'expanded-sync': this.state.expanded, 'blink': this.state.blink, }); return (
(this.setState({expanded: !this.state.expanded}))} >
Syncing your mailbox
{this.state.expanded ? this._renderExpandedDetails() : false}
) } }