/** @format */ /** * External dependencies */ import { __, sprintf } from '@wordpress/i18n'; import { Component, Fragment } from '@wordpress/element'; import { compose } from '@wordpress/compose'; import Gridicon from 'gridicons'; import interpolateComponents from 'interpolate-components'; import { noop, isNull } from 'lodash'; import PropTypes from 'prop-types'; /** * WooCommerce dependencies */ import { EmptyContent, Gravatar, Link, ProductImage, ReviewRating, Section, SplitButton, } from '@woocommerce/components'; /** * Internal dependencies */ import { ActivityCard, ActivityCardPlaceholder } from '../activity-card'; import ActivityHeader from '../activity-header'; import { QUERY_DEFAULTS } from 'wc-api/constants'; import sanitizeHTML from 'lib/sanitize-html'; import withSelect from 'wc-api/with-select'; class ReviewsPanel extends Component { renderReview( review ) { const product = ( review && review._embedded && review._embedded.up && review._embedded.up[ 0 ] ) || null; if ( isNull( product ) ) { return null; } const title = interpolateComponents( { mixedString: sprintf( __( '{{productLink}}%s{{/productLink}} reviewed by {{authorLink}}%s{{/authorLink}}', 'wc-admin' ), product.name, review.reviewer ), components: { productLink: , authorLink: , }, } ); const subtitle = ( { review.verified && ( { __( 'Verified customer', 'wc-admin' ) } ) } ); const icon = (
); const cardActions = () => { const mainLabel = 'approved' === review.status ? __( 'Unapprove', 'wc-admin' ) : __( 'Approve', 'wc-admin' ); return ( ); }; return ( ); } render() { const { isError, isRequesting, reviews } = this.props; if ( isError ) { const title = __( 'There was an error getting your reviews. Please try again.', 'wc-admin' ); const actionLabel = __( 'Reload', 'wc-admin' ); const actionCallback = () => { window.location.reload(); }; return ( ); } return (
{ isRequesting ? ( ) : ( { reviews.map( this.renderReview ) } ) }
); } } ReviewsPanel.propTypes = { reviews: PropTypes.array.isRequired, isError: PropTypes.bool, isRequesting: PropTypes.bool, }; ReviewsPanel.defaultProps = { reviews: [], isError: false, isRequesting: false, }; export default compose( withSelect( select => { const { getReviews, getReviewsError, isGetReviewsRequesting } = select( 'wc-api' ); const reviewsQuery = { page: 1, per_page: QUERY_DEFAULTS.pageSize, _embed: 1, }; const reviews = getReviews( reviewsQuery ); const isError = Boolean( getReviewsError( reviewsQuery ) ); const isRequesting = isGetReviewsRequesting( reviewsQuery ); return { reviews, isError, isRequesting }; } ) )( ReviewsPanel );