/**
 * AppLocale view
 *
 * Generated by coz on 8/14/2016,
 * from a template provided by apeman-asset-templates.
 *
 * @function AppLocaleView
 */
'use strict'

import React, { Component, PropTypes as types } from 'react'
import defineDebug from 'debug'
import { LangForm } from '../../fragments'
import {
  ApView, ApViewHeader, ApViewBody
} from 'apeman-react-basic'

import { IconClasses } from 'ore-fol-enums'
import { asView, asConnected, asLocaled, asServed, combine } from '../../wrappers'
const { LOCALE_ICON } = IconClasses

const debug = defineDebug('project:view:app-locale')

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

  static get defaultProps () {
    return {}
  }

  render () {
    const s = this
    const {
      props,
      l,
      onSubmit
    } = s

    let {
      lang
    } = props

    return (
      <ApView id='app-locale-view'
              className='view'
              way={ props.way }
      >
        <ApViewHeader onLeftTap={ s.handlePop }
                      leftText={ null }
                      leftIcon={ props.popIcon }
                      titleText={ l('titles.LOCALE_SETTING') }
                      titleIcon={ LOCALE_ICON }
                      onRightTap={ null }
                      rightIcon={ null }
        />
        <ApViewBody>
          <LangForm id='app-lang-form'
                    values={ { lang } }
                    onSubmit={ onSubmit }
          />
        </ApViewBody>
      </ApView>
    )
  }

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

  onSubmit ({ lang }) {
    const s = this
    const { setLang } = s.service('localeService')
    setLang(lang)
  }
}

export default combine(
  asServed(),
  asLocaled(),
  asView(),
  asConnected(
    (state, { srvc }) => ({
      lang: srvc.localeService.getLang()
    })
  )
)(AppLocaleView)
