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

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

import { Aside, Footer, AmazonAd } from '../../fragments'

const debug = defineDebug('project:view:thread-top')

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

  static get defaultProps () {
    return {}
  }

  render () {
    const s = this
    const {
      props,
      l
    } = s
    return (
      <ApView headerless
              id='thread-top-view'
              className='view'
              spinning={ props.spinning }
              way={ props.way }
      >
        <ApViewBody style={ { padding: 0 } }>
          <div className='aside-wrap'>
            <div className='embed-view-container'>
              <ThreadListView { ...props } />
            </div>
            <div className='aside-alt'>
              <fieldset className='ad-fieldset'>
                <legend>{ l('headings.AD') }</legend>
                <AmazonAd size={ AmazonAd.sizes.foot }/>
              </fieldset>
            </div>
            <Aside ad
                   news={ props.latestNews }
            />
          </div>
          <Footer />
        </ApViewBody>
      </ApView>
    )
  }

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

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

  componentDidMount () {
    debug('didMount')
    const s = this
  }

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

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

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

}

export default combine(
  asServed(),
  forSpin(),
  asLocaled(),
  asView(),
  forNews(),
  asConnected()
)(ThreadTopView)

