diff --git a/src/components/modals/ReleaseNotes/index.js b/src/components/modals/ReleaseNotes/index.js index cf4a4b35..68d08028 100644 --- a/src/components/modals/ReleaseNotes/index.js +++ b/src/components/modals/ReleaseNotes/index.js @@ -1,16 +1,55 @@ // @flow -import React from 'react' +import React, { PureComponent } from 'react' +import { connect } from 'react-redux' +import semver from 'semver' + +import type { State } from 'reducers' +import { openModal } from 'reducers/modals' +import { lastUsedVersionSelector } from 'reducers/settings' +import { saveSettings } from 'actions/settings' import { MODAL_RELEASES_NOTES } from 'config/constants' import Modal from 'components/base/Modal' import ReleaseNotesBody from './ReleaseNotesBody' -const ReleaseNotesModal = () => ( - } - /> -) +type Props = { + openModal: Function, + saveSettings: Function, + lastUsedVersion: string, +} + +const mapStateToProps = (state: State) => ({ + lastUsedVersion: lastUsedVersionSelector(state), +}) + +const mapDispatchToProps = { + openModal, + saveSettings, +} + +class ReleaseNotesModal extends PureComponent { + componentDidMount() { + const { lastUsedVersion, saveSettings, openModal } = this.props + const currentVersion = __APP_VERSION__ + + if (semver.gt(currentVersion, lastUsedVersion)) { + openModal(MODAL_RELEASES_NOTES, currentVersion) + saveSettings({ lastUsedVersion: currentVersion }) + } + } + + render() { + return ( + } + /> + ) + } +} -export default ReleaseNotesModal +export default connect( + mapStateToProps, + mapDispatchToProps, +)(ReleaseNotesModal)