Release notification changes

This commit is contained in:
2020-02-22 21:32:41 -06:00
parent 8e4ed173fd
commit 5aa47c33c9
8 changed files with 58 additions and 12 deletions

View File

@@ -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'}/>
<UpgradeIcon
available={this.props.UpgradeAvailable}
clicked={()=>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)),
};
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -143,4 +143,4 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => {
{optionsDisplay}
</Grid>
);
});
});

View File

@@ -17,5 +17,9 @@
max-width: 100%;
max-height: 100%;
box-sizing: border-box;
opacity: 0.65;
}
color: var(--heading_text_color);
}
.UpgradeIcon.Release {
color: var(--heading_other_text_color);
}

View File

@@ -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 => {
(
<div className={'UpgradeIconOwner'}>
<p data-tip='' data-for={placement}>
<img alt=''
onClick={props.clicked}
src={availableImage}
className={'UpgradeIcon'}/>
<a href={'#'}
className={styles.join(' ')}
onClick={props.clicked}>
<FontAwesomeIcon icon={faExclamationTriangle}/>
</a>
</p>
<ReactTooltip id={placement} place={placement}>{toolTipText}</ReactTooltip>
</div>
)
: null;
};
};

View File

@@ -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());
};

View File

@@ -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)=> {

View File

@@ -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,