import isEqual from 'lodash.isequal'

export default class PageTitle extends PureComponent {
  static propTypes = {
    badge: PropTypes.oneOfType([
      PropTypes.number,
      PropTypes.string,
    ]),
    path: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.array,
    ]),
  }

  componentDidMount() {
    this.updatePageTitle(this.props) 
  }

  componentDidUpdate(prevProps) {
    if (this.props.badge !== prevProps.badge || !isEqual(this.props.path, prevProps.path)) {
      this.updatePageTitle(this.props)
    }
  }

  updatePageTitle = ({ badge, path}) => {
    const site = 'Gab'
    
    let realPath = Array.isArray(path) ? path.join(' / ') : path
    realPath = realPath.trim()

    const realBadge = !!badge ? `(${badge})` : ''

    const title = `${realBadge} ${realPath} / ${site}`.trim()

    document.title = title
  }

  render() {
    return null
  }
}