/**
 * HeaderDropdown component
 *
 * Generated by coz on 2016-12-04,
 * from a template provided by apeman-asset-templates.
 *
 * @function HeaderDropdown
 */
'use strict'

import React from 'react'
import defineDebug from 'debug'
import { isAdmin } from 'ore-fol-helpers'
import  ProfileImage from '../images/profile_image'
import {
  ApHeaderDropdown, ApHeaderDropdownItem
} from 'apeman-react-basic'
import { asPure, asLocaled, combine } from '../../wrappers'

const debug = defineDebug('project:fragment:header-dropdown')

/** @lends HeaderDropdown */
const HeaderDropdown = ({
  l,
  onTurn,
  visible = false,
  signed,
  onSignout,
  onAccount,
  onAdmin
}) => (
  <ApHeaderDropdown className='header-dropdown'
                    open={ visible }
                    onTap={ () => onTurn(!visible) }
                    onOutside={ () => onTurn(false) }
                    title={ HeaderDropdown.Title({ signed, profile: signed.profile }) }
  >
    <ApHeaderDropdownItem onTap={ onAccount }>{ l('buttons.SHOW_ACCOUNT_INFO') }</ApHeaderDropdownItem>
    <ApHeaderDropdownItem onTap={ onSignout }>{ l('buttons.DO_SIGNOUT') }</ApHeaderDropdownItem>
    {
      isAdmin(signed) ? (
          <ApHeaderDropdownItem onTap={ onAdmin }>{ l('buttons.SHOW_ADMIN') }</ApHeaderDropdownItem>
        ) : null
    }
  </ApHeaderDropdown>
)

Object.assign(HeaderDropdown, {
  Title: ({ signed, profile = {} }) => (
    <span className='header-dropdown-title'>
        <ProfileImage profile={ profile } className='header-dropdown-title-img'/>
        <span>{ profile.name || signed.key }</span>
      </span>
  )
})

export default combine(
  asPure(),
  asLocaled.proxy()
)(HeaderDropdown)
