componentDidUpdate()

in src/amo/components/AddonRecommendations/index.js [61:99]


  componentDidUpdate(prevProps: Props) {
    const { addon: oldAddon, recommendations: oldRecommendations } = prevProps;
    const {
      addon: newAddon,
      recommendations: newRecommendations,
      tracking,
      errorHandler,
    } = this.props;

    // Fetch recommendations when the add-on changes.
    if (
      newAddon &&
      (!oldAddon || (oldAddon && oldAddon.guid !== newAddon.guid))
    ) {
      this.dispatchFetchRecommendations(newAddon.guid);
    }

    // Send the GA ping when recommendations are loaded.
    if (newRecommendations && oldRecommendations !== newRecommendations) {
      const { fallbackReason, loading, outcome } = newRecommendations;

      if (loading || errorHandler.hasError()) {
        return;
      }

      invariant(newAddon, 'newAddon is required');
      invariant(outcome, 'outcome is required');

      let action = outcome;
      if (fallbackReason) {
        action = `${action}-${fallbackReason}`;
      }
      tracking.sendEvent({
        action,
        category: TAAR_IMPRESSION_CATEGORY,
        label: newAddon.guid,
      });
    }
  }