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,
});
}
}