diff --git a/src/App.js b/src/App.js index c34ca6e..5f570a8 100644 --- a/src/App.js +++ b/src/App.js @@ -14,6 +14,10 @@ import MountItems from './containers/MountItems/MountItems'; import NewReleases from './components/NewReleases/NewReleases'; import {notifyError} from './redux/actions/error_actions'; import Reboot from './components/Reboot/Reboot'; +import { + setDismissNewReleasesAvailable, + setNewReleasesAvailable +} from './redux/actions/release_version_actions'; import ReleaseVersionDisplay from './components/ReleaseVersionDisplay/ReleaseVersionDisplay'; import { displaySelectAppPlatform, @@ -73,6 +77,15 @@ class App extends IPCContainer { this.props.VersionLookup[Constants.RELEASE_TYPES[this.props.Release]][this.props.ReleaseVersion]; }; + handleUpgradeIconClicked = () => { + if (this.props.UpgradeAvailable) { + this.props.setDismissUIUpgrade(false) + } else if (this.props.NewReleasesAvailable2.length > 0) { + this.props.setNewReleasesAvailable(this.props.NewReleasesAvailable2); + this.props.setDismissNewReleasesAvailable(false); + } + }; + render() { const selectedVersion = this.getSelectedVersion(); @@ -177,8 +190,9 @@ class App extends IPCContainer { textAlign={'center'} type={'Heading1'}/> this.props.setDismissUIUpgrade(false)} + available={this.props.UpgradeAvailable || (this.props.NewReleasesAvailable2.length > 0)} + newReleases={!this.props.UpgradeAvailable && (this.props.NewReleasesAvailable2.length > 0)} + clicked={this.handleUpgradeIconClicked} col={dimensions => dimensions.columns - 6} colSpan={5} row={1} @@ -225,6 +239,7 @@ const mapStateToProps = state => { MissingDependencies: state.install.MissingDependencies, MountsBusy: state.mounts.MountsBusy, NewReleasesAvailable: state.relver.NewReleasesAvailable, + NewReleasesAvailable2: state.relver.NewReleasesAvailable2, Platform: state.common.Platform, ProviderState: state.mounts.ProviderState, RebootRequired: state.common.RebootRequired, @@ -243,6 +258,8 @@ const mapDispatchToProps = dispatch => { loadReleases: ()=> dispatch(loadReleases()), notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)), saveState: () => dispatch(saveState()), + setDismissNewReleasesAvailable: dismiss => dispatch(setDismissNewReleasesAvailable), + setNewReleasesAvailable: items => dispatch(setNewReleasesAvailable(items)), setDismissUIUpgrade: dismiss => dispatch(setDismissUIUpgrade(dismiss)), }; }; diff --git a/src/assets/images/release_available.png b/src/assets/images/release_available.png deleted file mode 100644 index 4dbba4c..0000000 Binary files a/src/assets/images/release_available.png and /dev/null differ diff --git a/src/components/ReleaseVersionDisplay/ReleaseVersionDisplay.js b/src/components/ReleaseVersionDisplay/ReleaseVersionDisplay.js index 71dadfe..d9e8149 100644 --- a/src/components/ReleaseVersionDisplay/ReleaseVersionDisplay.js +++ b/src/components/ReleaseVersionDisplay/ReleaseVersionDisplay.js @@ -143,4 +143,4 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => { {optionsDisplay} ); -}); \ No newline at end of file +}); diff --git a/src/components/UpgradeIcon/UpgradeIcon.css b/src/components/UpgradeIcon/UpgradeIcon.css index fcc9e3c..0dce756 100644 --- a/src/components/UpgradeIcon/UpgradeIcon.css +++ b/src/components/UpgradeIcon/UpgradeIcon.css @@ -17,5 +17,9 @@ max-width: 100%; max-height: 100%; box-sizing: border-box; - opacity: 0.65; - } \ No newline at end of file + color: var(--heading_text_color); +} + +.UpgradeIcon.Release { + color: var(--heading_other_text_color); +} diff --git a/src/components/UpgradeIcon/UpgradeIcon.js b/src/components/UpgradeIcon/UpgradeIcon.js index 5b3af36..3828eef 100644 --- a/src/components/UpgradeIcon/UpgradeIcon.js +++ b/src/components/UpgradeIcon/UpgradeIcon.js @@ -1,13 +1,19 @@ import React from 'react'; import './UpgradeIcon.css'; -import availableImage from '../../assets/images/release_available.png'; import ReactTooltip from 'react-tooltip'; +import {faExclamationTriangle} from '@fortawesome/free-solid-svg-icons'; +import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; export default props => { + const styles = ['UpgradeIcon']; let placement = 'left'; let toolTipText = 'UI Upgrade Available'; if (props.release) { placement='bottom'; + styles.push('Release'); + } + + if (props.release || props.newReleases) { toolTipText = 'New Release Available'; } @@ -16,13 +22,14 @@ export default props => { (

- + + +

{toolTipText}
) : null; -}; \ No newline at end of file +}; diff --git a/src/redux/actions/install_actions.js b/src/redux/actions/install_actions.js index 48700c9..68fb3df 100644 --- a/src/redux/actions/install_actions.js +++ b/src/redux/actions/install_actions.js @@ -10,7 +10,8 @@ import { loadReleases, setActiveRelease, setInstalledVersion, - setReleaseUpgradeAvailable + setReleaseUpgradeAvailable, + setNewReleasesAvailable2, } from './release_version_actions'; import { confirmYesNo, @@ -224,6 +225,11 @@ export const installRelease = source => { FilePath: source, }); + if (arg.data.Success) { + localStorage.setItem('previous_releases', localStorage.getItem('releases')); + dispatch(setNewReleasesAvailable2([])); + } + dispatch(setInstallComplete(arg.data)); dispatch(checkVersionInstalled()); }; diff --git a/src/redux/actions/release_version_actions.js b/src/redux/actions/release_version_actions.js index e570313..595826a 100644 --- a/src/redux/actions/release_version_actions.js +++ b/src/redux/actions/release_version_actions.js @@ -14,6 +14,7 @@ import { } from './install_actions'; import {unmountAll} from './mount_actions'; import { + checkNewReleases, getIPCRenderer, getNewReleases } from '../../utils'; @@ -140,8 +141,11 @@ export const loadReleases = () => { dispatch(setNewReleasesAvailable(newReleases)); if (getState().relver.NewReleasesAvailable.length > 0) { + dispatch(setNewReleasesAvailable2(newReleases)); localStorage.setItem('previous_releases', storedReleases); dispatch(showWindow()); + } else if ((newReleases = checkNewReleases()).length > 0) { + dispatch(setNewReleasesAvailable2(newReleases)); } }).catch(error => { const releases = localStorage.getItem('releases'); @@ -193,6 +197,7 @@ export const setDismissNewReleasesAvailable = createAction('relver/setDismissNew export const setDismissUIUpgrade = createAction('relver/setDismissUIUpgrade'); export const setInstalledVersion = createAction('relver/setInstalledVersion'); export const setNewReleasesAvailable = createAction('relver/setNewReleasesAvailable'); +export const setNewReleasesAvailable2 = createAction('relver/setNewReleasesAvailable2'); export const SET_RELEASE_DATA = 'relver/setReleaseData'; export const setReleaseData = (locationsLookup, versionLookup)=> { diff --git a/src/redux/reducers/release_version_reducer.js b/src/redux/reducers/release_version_reducer.js index 52066ec..5946b7e 100644 --- a/src/redux/reducers/release_version_reducer.js +++ b/src/redux/reducers/release_version_reducer.js @@ -19,6 +19,7 @@ export const releaseVersionReducer = createReducer({ InstalledVersion: 'none', LocationsLookup: {}, NewReleasesAvailable: [], + NewReleasesAvailable2: [], Release: 0, ReleaseDefault: 0, ReleaseUpgradeAvailable: false, @@ -76,6 +77,12 @@ export const releaseVersionReducer = createReducer({ NewReleasesAvailable: action.payload, }; }, + [Actions.setNewReleasesAvailable2]: (state, action) => { + return { + ...state, + NewReleasesAvailable2: action.payload, + }; + }, [Actions.SET_RELEASE_DATA]: (state, action) => { return { ...state,