loadDataIfNeeded()

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