in src/amo/pages/AddonInfo/index.js [87:139]
loadDataIfNeeded(prevProps?: InternalProps) {
const {
addon,
addonInfo,
addonInfoIsLoading,
addonIsLoading,
addonVersion,
addonVersionIsLoading,
dispatch,
errorHandler,
infoType,
match: {
params: { slug },
},
} = this.props;
const oldAddon = prevProps && prevProps.addon;
if (errorHandler.hasError()) {
log.warn('Not loading data because of an error');
return;
}
// Fetch data when the add-on changes.
const addonHasChanged = oldAddon && oldAddon.slug !== slug;
if ((!addon || addonHasChanged) && !addonIsLoading) {
dispatch(fetchAddon({ showGroupedRatings: true, slug, errorHandler }));
}
if (infoType === ADDON_INFO_TYPE_CUSTOM_LICENSE) {
const needsLicenceText =
addonVersion &&
addonVersion.license &&
addonVersion.license.text === undefined;
if (
addon &&
addon.currentVersionId &&
!addonVersionIsLoading &&
(!addonVersion || needsLicenceText || addonHasChanged)
) {
dispatch(
fetchVersion({
errorHandlerId: errorHandler.id,
slug,
versionId: addon.currentVersionId,
}),
);
}
} else if ((!addonInfo || addonHasChanged) && !addonInfoIsLoading) {
dispatch(fetchAddonInfo({ slug, errorHandlerId: errorHandler.id }));
}
}