/**
 * RecoverDone view
 *
 * Generated by coz on 2016-11-07,
 * from a template provided by apeman-asset-templates.
 *
 * @function RecoverSendDoneView
 */
'use strict'

import React, { Component, PropTypes as types } from 'react'
import defineDebug from 'debug'
import {
  ApView,
  ApViewBody,
  ApDone
} from 'apeman-react-basic'
import {
  asConnected,
  asView,
  asLocaled,
  asServed,
  forSpin,
  forOne, combine
} from '../../wrappers'

const debug = defineDebug('project:view:recover-done')

/** @lends RecoverSendDoneView */
class RecoverSendDoneView extends Component {
  // --------------------
  // Specs
  // --------------------
  static get propTypes () {
    return {}
  }

  static get defaultProps () {
    return {}
  }

  render () {
    const s = this
    let {
      props
    } = s
    let { email } = props
    return (
      <ApView id='recover-done-view'
              className='view'
              spinning={ props.spinning }
              way={ props.way }
      >
        <ApViewBody>
          <ApDone message={ l('messages.RECOVER_SEND_DONE', { vars: { email } })}
                  linkHref='/'
                  linkText={ l('links.RETURN_TO_TOP') }/>
        </ApViewBody>
      </ApView>
    )
  }

  // --------------------
  // Lifecycle
  // --------------------

  componentWillMount () {
    debug('willMount')
    const s = this
  }

  componentDidMount () {
    debug('didMount')
    const s = this
    const { use } = s.service('apiService')
    const { props } = s
    let { id: recoverId } = props
    if (!recoverId) {
      s.handlePop()
      return
    }
    s.applySpinWhile(() =>
      use('recoverApi').then((recoverApi) =>
        s.applyOneLoad({
          recover: () => recoverApi
            .one(recoverId)
            .then((recover) => {
              if (!recover) {
                s.handlePop()
                return
              }
              return recover
            })
        })
      )
    )
  }

  componentWillUnmount () {
    debug('willUnmount')
    const s = this
  }

  // --------------------
  // Handlers
  // --------------------

  // --------------------
  // For redux
  // --------------------
  static mapStateToProps (state, ownProps) {
    return {}
  }

}

export default combine(
  asServed(),
  forSpin(),
  forOne(),
  asLocaled(),
  asView(),
  asConnected()
)(RecoverSendDoneView)

