in src/amo/pages/Addon/index.js [417:557]
render() {
const {
addon,
addonsByAuthors,
clientApp,
currentVersion,
errorHandler,
i18n,
} = this.props;
const isThemeType = addon && addon.type === ADDON_TYPE_STATIC_THEME;
let errorBanner = null;
if (errorHandler.hasError()) {
// Show a list of errors at the top of the add-on section.
errorBanner = errorHandler.renderError();
}
const addonType = addon ? addon.type : ADDON_TYPE_EXTENSION;
const showSummary = !addon || addon.summary?.length;
const summary = (
<p className="Addon-summary">{addon ? addon.summary : <LoadingText />}</p>
);
const addonPreviews = addon ? addon.previews : [];
const numberOfAddonsByAuthors = addonsByAuthors
? addonsByAuthors.length
: 0;
return (
<Page
showVPNPromo={Boolean(addon && addon.type === ADDON_TYPE_EXTENSION)}
errorHandler={errorHandler}
isAddonInstallPage
showWrongPlatformWarning={false}
includeGoogleDisclaimerInFooter={
clientApp === CLIENT_APP_FIREFOX && !!addon?.isAndroidCompatible
}
>
<div
className={makeClassName('Addon', `Addon-${addonType}`, {
'Addon-theme': isThemeType,
'Addon--has-more-than-0-addons': numberOfAddonsByAuthors > 0,
'Addon--has-more-than-3-addons': numberOfAddonsByAuthors > 3,
})}
data-site-identifier={addon ? addon.id : null}
>
<AddonHead addon={addon} />
{errorBanner}
{this.renderCategorySuggestions(VARIANT_SHOW_TOP)}
<div className="Addon-header-wrapper">
<Card className="Addon-header-info-card" photonStyle>
<AddonInstallError error={this.props.installError} />
<AddonCompatibilityError addon={addon} />
{addon &&
(addon.status !== STATUS_PUBLIC || addon.is_disabled) ? (
<Notice type="error" className="Addon-non-public-notice">
{i18n.gettext(
'This is not a public listing. You are only seeing it because of elevated permissions.',
)}
</Notice>
) : null}
<header className="Addon-header">
{this.headerImage()}
<AddonTitle addon={addon} />
<AddonBadges addon={addon} />
{addon && <InstallWarning addon={addon} />}
<div className="Addon-summary-and-install-button-wrapper">
{showSummary ? summary : null}
<InstallButtonWrapper addon={addon} />
</div>
<h2 className="visually-hidden">
{i18n.gettext('Extension Metadata')}
</h2>
</header>
{addon ? (
<WrongPlatformWarning
addon={addon}
className="Addon-WrongPlatformWarning"
/>
) : null}
</Card>
<Card className="Addon-header-meta-and-ratings" photonStyle>
<AddonMeta addon={addon} />
</Card>
</div>
{this.renderCategorySuggestions(VARIANT_SHOW_MIDDLE)}
<div className="Addon-details">
<div className="Addon-main-content">
{this.renderAddonsByAuthorsCard({ isForTheme: true })}
{addonPreviews.length > 0 && !isThemeType ? (
<Card
className="Addon-screenshots"
header={i18n.gettext('Screenshots')}
>
<ScreenShots previews={addonPreviews} />
</Card>
) : null}
{this.renderShowMoreCard()}
{this.renderRecommendations()}
</div>
{this.renderRatingsCard()}
<ContributeCard addon={addon} />
<PermissionsCard version={currentVersion} />
<AddonMoreInfo addon={addon} />
<AddAddonToCollection addon={addon} />
{this.renderVersionReleaseNotes()}
{this.renderAddonsByAuthorsCard({ isForTheme: false })}
</div>
</div>
</Page>
);
// eslint-enable react/no-danger
}
}