renderRatingsCard()

in src/amo/pages/Addon/index.js [200:260]


  renderRatingsCard() {
    const { RatingManager, addon, i18n, location, currentVersion } = this.props;
    let content;
    let footerPropName = 'footerText';

    let ratingManager;
    if (addon && currentVersion) {
      ratingManager = <RatingManager addon={addon} version={currentVersion} />;
    } else {
      ratingManager = (
        <p className="Addon-no-rating-manager">
          {i18n.gettext(`This add-on cannot be rated because no versions
            have been published.`)}
        </p>
      );
    }

    if (!addon) {
      content = <LoadingText width={100} />;
    } else if (addon.ratings && addon.ratings.count) {
      const { count } = addon.ratings;
      const linkText = i18n.sprintf(
        i18n.ngettext(
          'Read %(count)s review',
          'Read all %(count)s reviews',
          count,
        ),
        { count: i18n.formatNumber(count) },
      );

      footerPropName = 'footerLink';
      content = (
        <Link
          className="Addon-all-reviews-link"
          to={reviewListURL({
            addonSlug: addon.slug,
            location,
          })}
        >
          {linkText}
        </Link>
      );
    } else {
      content = i18n.gettext('No reviews yet');
    }

    const props = {
      [footerPropName]: (
        <div className="Addon-read-reviews-footer">{content}</div>
      ),
    };
    return (
      <Card
        header={i18n.gettext('Rate your experience')}
        className="Addon-overall-rating"
        {...props}
      >
        {ratingManager}
      </Card>
    );
  }