Skip to content

Commit 75466b3

Browse files
Merge pull request #1184 from TheRealJon/CONSOLE-1270
Show or hide masthead cluster update icon in real-time
2 parents e05b036 + 7d825a2 commit 75466b3

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

frontend/public/components/cluster-settings/cluster-settings.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ enum ClusterUpdateStatus {
3232
}
3333

3434
const clusterAutoscalerReference = referenceForModel(ClusterAutoscalerModel);
35-
const clusterVersionReference = referenceForModel(ClusterVersionModel);
35+
export const clusterVersionReference = referenceForModel(ClusterVersionModel);
3636

3737
export const getAvailableClusterChannels = () => ({'nightly-4.0': 'nightly-4.0', 'pre-release-4.0': 'pre-release-4.0', 'stable-4.0': 'stable-4.0'});
3838

frontend/public/components/masthead-toolbar.jsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,21 @@ import { Button, Dropdown, DropdownToggle, DropdownSeparator, DropdownItem, Keba
66

77
import { FLAGS, stateToProps as flagStateToProps, flagPending } from '../features';
88
import { authSvc } from '../module/auth';
9-
import { history } from './utils';
9+
import { history, Firehose } from './utils';
1010
import { openshiftHelpBase } from './utils/documentation';
1111
import { AboutModal } from './about-modal';
12+
import { getAvailableClusterUpdates, clusterVersionReference } from './cluster-settings/cluster-settings';
13+
14+
const UpdatesAvailableButton = ({obj, onClick}) => {
15+
const updatesAvailable = !_.isEmpty(getAvailableClusterUpdates(obj.data));
16+
return updatesAvailable
17+
? <ToolbarItem>
18+
<Button variant="plain" aria-label="Cluster Updates Available" onClick={onClick}>
19+
<ArrowCircleUpIcon />
20+
</Button>
21+
</ToolbarItem>
22+
: null;
23+
};
1224

1325
class MastheadToolbar_ extends React.Component {
1426
constructor(props) {
@@ -218,16 +230,20 @@ class MastheadToolbar_ extends React.Component {
218230
render() {
219231
const { isApplicationLauncherDropdownOpen, isHelpDropdownOpen, showAboutModal } = this.state;
220232
const { flags } = this.props;
233+
const resources = [{
234+
kind: clusterVersionReference,
235+
name: 'version',
236+
isList: false,
237+
prop: 'obj',
238+
}];
221239
return (
222240
<React.Fragment>
223241
<Toolbar>
224242
<ToolbarGroup className="pf-u-sr-only pf-u-visible-on-md">
225243
{/* desktop -- (updates button) */}
226-
{flags[FLAGS.CLUSTER_UPDATES_AVAILABLE] && <ToolbarItem>
227-
<Button variant="plain" aria-label="Cluster Updates Available" onClick={this._onClusterUpdatesAvailable}>
228-
<ArrowCircleUpIcon />
229-
</Button>
230-
</ToolbarItem>}
244+
<Firehose resources={resources}>
245+
<UpdatesAvailableButton onClick={this._onClusterUpdatesAvailable} />
246+
</Firehose>
231247
{/* desktop -- (application launcher dropdown), help dropdown [documentation, about] */}
232248
{flags[FLAGS.OPENSHIFT] && <ToolbarItem>
233249
<Dropdown
@@ -281,7 +297,7 @@ class MastheadToolbar_ extends React.Component {
281297
}
282298

283299
const mastheadToolbarStateToProps = state => {
284-
const desiredFlags = [FLAGS.AUTH_ENABLED, FLAGS.OPENSHIFT, FLAGS.CLUSTER_UPDATES_AVAILABLE];
300+
const desiredFlags = [FLAGS.AUTH_ENABLED, FLAGS.OPENSHIFT];
285301
const flagProps = flagStateToProps(desiredFlags, state);
286302
const user = state.UI.get('user');
287303
return { ...flagProps, user };

frontend/public/features.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ import { UIActions } from './ui/ui-actions';
4141
OPERATOR_HUB: false,
4242
CLUSTER_API: false,
4343
CLUSTER_VERSION: false,
44-
CLUSTER_UPDATES_AVAILABLE: false,
4544
MACHINE_CONFIG: false,
4645
*/
4746
export enum FLAGS {
@@ -63,7 +62,6 @@ export enum FLAGS {
6362
OPERATOR_HUB = 'OPERATOR_HUB',
6463
CLUSTER_API = 'CLUSTER_API',
6564
CLUSTER_VERSION = 'CLUSTER_VERSION',
66-
CLUSTER_UPDATES_AVAILABLE = 'CLUSTER_UPDATES_AVAILABLE',
6765
MACHINE_CONFIG = 'MACHINE_CONFIG',
6866
}
6967

@@ -118,14 +116,10 @@ const detectClusterVersion = dispatch => coFetchJSON(clusterVersionPath)
118116
if (hasClusterVersion && !_.isEmpty(clusterVersion.spec)) {
119117
dispatch(UIActions.setClusterID(clusterVersion.spec.clusterID));
120118
}
121-
122-
const availableUpdates = _.get(clusterVersion, 'status.availableUpdates');
123-
setFlag(dispatch, FLAGS.CLUSTER_UPDATES_AVAILABLE, !_.isEmpty(availableUpdates));
124119
},
125120
err => {
126121
if (_.includes([403, 404], _.get(err, 'response.status'))) {
127122
setFlag(dispatch, FLAGS.CLUSTER_VERSION, false);
128-
setFlag(dispatch, FLAGS.CLUSTER_UPDATES_AVAILABLE, false);
129123
} else {
130124
handleError(err, FLAGS.OPENSHIFT, dispatch, detectOpenShift);
131125
}

0 commit comments

Comments
 (0)