import { connect } from 'react-redux';
import { doResolveUri } from 'redux/actions/claims';
import { makeSelectClaimForUri } from 'redux/selectors/claims';
import { selectPrimaryUri, makeSelectContentWatchedPercentageForUri } from 'redux/selectors/content';
import CardMedia from './view';
import { makeSelectClientSetting } from 'redux/selectors/settings';
import * as SETTINGS from 'constants/settings';

const select = (state, props) => {
  const claimUriBeingPlayed = selectPrimaryUri(state);
  let isBeingPlayed = false;

  if (claimUriBeingPlayed) {
    const claim = makeSelectClaimForUri(props.uri)(state);
    const claimBeingPlayed = makeSelectClaimForUri(claimUriBeingPlayed)(state);
    isBeingPlayed = claim && claim.claim_id === claimBeingPlayed.claim_id;
  }

  return {
    watchedPercentage: makeSelectContentWatchedPercentageForUri(props.uri)(state),
    claim: makeSelectClaimForUri(props.uri)(state),
    showPercentage: !isBeingPlayed && makeSelectClientSetting(SETTINGS.PERSIST_WATCH_TIME)(state),
  };
};

export default connect(select, { doResolveUri })(CardMedia);