diff --git a/src/disco/components/Addon.js b/src/disco/components/Addon.js index 6a822a69753..89891280a57 100644 --- a/src/disco/components/Addon.js +++ b/src/disco/components/Addon.js @@ -6,6 +6,8 @@ import { gettext as _ } from 'core/utils'; import InstallButton from 'disco/containers/InstallButton'; import { validAddonTypes, + validInstallStates, + ERROR, EXTENSION_TYPE, THEME_TYPE, THEME_PREVIEW, @@ -18,7 +20,9 @@ import 'disco/css/Addon.scss'; export default class Addon extends React.Component { static propTypes = { accentcolor: PropTypes.string, + closeErrorAction: PropTypes.func, editorialDescription: PropTypes.string.isRequired, + errorMessage: PropTypes.string, footerURL: PropTypes.string, headerURL: PropTypes.string, heading: PropTypes.string.isRequired, @@ -26,6 +30,7 @@ export default class Addon extends React.Component { name: PropTypes.string.isRequired, slug: PropTypes.string.isRequired, subHeading: PropTypes.string, + status: PropTypes.oneOf(validInstallStates).isRequired, textcolor: PropTypes.string, type: PropTypes.oneOf(validAddonTypes).isRequired, themeAction: PropTypes.func, @@ -41,6 +46,15 @@ export default class Addon extends React.Component { return JSON.stringify({id, name, headerURL, footerURL, textcolor, accentcolor}); } + getError() { + const { status } = this.props; + const errorMessage = this.props.errorMessage || _('An unexpected error occurred'); + return status === ERROR ? (
{errorMessage}
+ Close +