import React from 'react'
import {
  connect
} from 'react-redux'
import {
  doNavigate,
} from 'actions/app'
import {
  doFetchFileInfo,
} from 'actions/file_info'
import {
  makeSelectFileInfoForUri,
} from 'selectors/file_info'
import {
  makeSelectClaimForUri,
  makeSelectContentTypeForUri,
  makeSelectMetadataForUri,
} from 'selectors/claims'
import {
  makeSelectCostInfoForUri,
} from 'selectors/cost_info'
import FilePage from './view'

const makeSelect = () => {
  const selectClaim = makeSelectClaimForUri(),
        selectContentType = makeSelectContentTypeForUri(),
        selectFileInfo = makeSelectFileInfoForUri(),
        selectCostInfo = makeSelectCostInfoForUri(),
        selectMetadata = makeSelectMetadataForUri()

  const select = (state, props) => ({
    claim: selectClaim(state, props),
    contentType: selectContentType(state, props),
    costInfo: selectCostInfo(state, props),
    metadata: selectMetadata(state, props),
    fileInfo: selectFileInfo(state, props)
  })

  return select
}

const perform = (dispatch) => ({
  navigate: (path, params) => dispatch(doNavigate(path, params)),
  fetchFileInfo: (uri) => dispatch(doFetchFileInfo(uri))
})

export default connect(makeSelect, perform)(FilePage)