diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx index 418da244f..440276e89 100644 --- a/src/components/Footer.jsx +++ b/src/components/Footer.jsx @@ -1,6 +1,6 @@ -import React from 'react'; +import React, { useContext } from 'react'; import PropTypes from 'prop-types'; -import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; +import { useIntl } from '@edx/frontend-platform/i18n'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; import { ensureConfig } from '@edx/frontend-platform'; import { AppContext } from '@edx/frontend-platform/react'; @@ -17,13 +17,17 @@ const EVENT_NAMES = { FOOTER_LINK: 'edx.bi.footer.link', }; -class SiteFooter extends React.Component { - constructor(props) { - super(props); - this.externalLinkClickHandler = this.externalLinkClickHandler.bind(this); - } +const SiteFooter = ({ + supportedLanguages, + onLanguageSelected, + logo, +}) => { + const intl = useIntl(); + const { config } = useContext(AppContext); - externalLinkClickHandler(event) { + const showLanguageSelector = supportedLanguages.length > 0 && onLanguageSelected; + + const externalLinkClickHandler = (event) => { const label = event.currentTarget.getAttribute('href'); const eventName = EVENT_NAMES.FOOTER_LINK; const properties = { @@ -31,52 +35,39 @@ class SiteFooter extends React.Component { label, }; sendTrackEvent(eventName, properties); - } - - render() { - const { - supportedLanguages, - onLanguageSelected, - logo, - intl, - } = this.props; - const showLanguageSelector = supportedLanguages.length > 0 && onLanguageSelected; - const { config } = this.context; + }; - return ( - - ); - } -} - -SiteFooter.contextType = AppContext; + return ( + + ); +}; SiteFooter.propTypes = { - intl: intlShape.isRequired, logo: PropTypes.string, onLanguageSelected: PropTypes.func, supportedLanguages: PropTypes.arrayOf(PropTypes.shape({ @@ -91,5 +82,5 @@ SiteFooter.defaultProps = { supportedLanguages: [], }; -export default injectIntl(SiteFooter); +export default SiteFooter; export { EVENT_NAMES }; diff --git a/src/components/LanguageSelector.jsx b/src/components/LanguageSelector.jsx index 1e8e1ad19..e8e6ef757 100644 --- a/src/components/LanguageSelector.jsx +++ b/src/components/LanguageSelector.jsx @@ -1,10 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { injectIntl, intlShape, FormattedMessage } from '@edx/frontend-platform/i18n'; +import { useIntl, FormattedMessage } from '@edx/frontend-platform/i18n'; const LanguageSelector = ({ - intl, options, onSubmit, ...props + options, onSubmit, ...props }) => { + const intl = useIntl(); const handleSubmit = (e) => { e.preventDefault(); const languageCode = e.target.elements['site-footer-language-select'].value; @@ -47,7 +48,6 @@ const LanguageSelector = ({ }; LanguageSelector.propTypes = { - intl: intlShape.isRequired, onSubmit: PropTypes.func.isRequired, options: PropTypes.arrayOf(PropTypes.shape({ value: PropTypes.string, @@ -55,4 +55,4 @@ LanguageSelector.propTypes = { })).isRequired, }; -export default injectIntl(LanguageSelector); +export default LanguageSelector; diff --git a/src/components/__snapshots__/Footer.test.jsx.snap b/src/components/__snapshots__/Footer.test.jsx.snap index 7e93dcad7..898eb65dc 100644 --- a/src/components/__snapshots__/Footer.test.jsx.snap +++ b/src/components/__snapshots__/Footer.test.jsx.snap @@ -12,6 +12,7 @@ exports[`