import React, { Component } from 'react' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import * as actions from '../actions' import { USES_DATASET } from '../types' import { Loader } from '../common' class PaperManager extends Component { componentDidMount() { this.props.actions.getPaperInfo(this.props.match.params.key) } componentDidUpdate(oldProps) { if (this.props.match.params.key !== oldProps.match.params.key) { this.props.actions.getPaperInfo(this.props.match.params.key) } console.log('whoms?') if (this.props.api.paperInfo.dataset !== oldProps.api.paperInfo.dataset && this.props.api.paperInfo.dataset && this.props.api.paperInfo.dataset.key) { console.log('vert?') this.props.actions.getVerificationsDataset(this.props.api.paperInfo.dataset.key) } if (this.props.api.verifications !== oldProps.api.verifications && this.props.api.paperInfo.dataset) { console.log('updated?') this.updateSortedCitations() } } updateSortedCitations() { const { api } = this.props const { paperInfo, unknownCitations, verifications } = api const { dataset } = paperInfo if (!dataset || !paperInfo.citations || !unknownCitations.citations || !verifications[dataset.key]) { this.props.actions.setSortedCitations([]) return } const citations = paperInfo.citations.concat(unknownCitations.citations) let verifiedLookup = verifications[dataset.key] || {} const sortedCitations = citations.map(citation => [ citation.title, verifiedLookup[citation.id] ? verifiedLookup[citation.id].uses_dataset : USES_DATASET.NO_DATA, citation.pdf.length, citation ]) .sort((a,b) => (b[1] - a[1] || b[2] - a[2] || (a[0].localeCompare(b[0])))) .map(tup => ({ ...tup[3], verified: tup[1], })) console.log('updated') this.props.actions.setSortedCitations(sortedCitations) } render() { if (!this.props.match.params.key) return null if (this.props.api.paperInfo.loading) return if (!this.props.api.paperInfo.dataset) return
Metadata not found
return null } } const mapStateToProps = state => ({ api: state.api, }) const mapDispatchToProps = dispatch => ({ actions: bindActionCreators({ ...actions }, dispatch), }) export default connect(mapStateToProps, mapDispatchToProps)(PaperManager)