import { Component } from 'react'; import { inject, observer } from 'mobx-react'; import { IntlShape, defineMessages, injectIntl } from 'react-intl'; import Markdown from 'markdown-to-jsx'; import { mdiArrowLeftCircle } from '@mdi/js'; import { openExternalUrl } from '../../helpers/url-helpers'; import Icon from '../../components/ui/icon'; import { ferdiumVersion } from '../../environment-remote'; import { getFerdiumVersion, getUpdateInfoFromGH, } from '../../helpers/update-helpers'; const messages = defineMessages({ headline: { id: 'settings.releasenotes.headline', defaultMessage: 'Release Notes', }, }); interface IProps { intl: IntlShape; } interface IState { data: string; } class AuthReleaseNotesScreen extends Component { constructor(props) { super(props); this.state = { data: '' }; } async componentDidMount() { const { intl } = this.props; const data = await getUpdateInfoFromGH( window.location.href, ferdiumVersion, intl, ); this.setState({ data, }); for (const link of document.querySelectorAll('.releasenotes__body a')) { link.addEventListener('click', this.handleClick.bind(this), false); } } handleClick(e) { e.preventDefault(); openExternalUrl(e.target.href); } componentWillUnmount() { document.removeEventListener( 'click', // eslint-disable-next-line unicorn/no-invalid-remove-event-listener this.handleClick.bind(this), false, ); } render() { const { intl } = this.props; const { data } = this.state; return (
Ferdium {getFerdiumVersion(window.location.href, ferdiumVersion)}{' '} {' | '} {intl.formatMessage(messages.headline)}
{data}
); } } export default injectIntl<'intl', IProps>( inject('stores', 'actions')(observer(AuthReleaseNotesScreen)), );