Disable publish button for releases with a published app

merge-requests/713/head
Farheen99 4 years ago
parent c4927c3508
commit 0df8c8d91c

@ -127,7 +127,10 @@ class AddNewReleaseFormComponent extends React.Component {
description: 'New release was added successfully', description: 'New release was added successfully',
}); });
const uuid = res.data.data.uuid; const uuid = res.data.data.uuid;
this.props.history.push('/publisher/apps/releases/' + uuid); this.props.history.push({
pathname: '/publisher/apps/releases/' + uuid,
state: { fullAppDetails: this.props.location.state.fullAppDetails },
});
} else { } else {
this.setState({ this.setState({
loading: false, loading: false,

@ -702,7 +702,14 @@ class AppDetailsDrawer extends React.Component {
title="Click to view full details" title="Click to view full details"
placement="topRight" placement="topRight"
> >
<Link to={'apps/releases/' + release.uuid}> <Link
to={{
pathname: `apps/releases/${release.uuid}`,
state: {
fullAppDetails: app.applicationReleases,
},
}}
>
<Card className="release-card"> <Card className="release-card">
<Meta <Meta
avatar={ avatar={
@ -773,7 +780,12 @@ class AppDetailsDrawer extends React.Component {
<Text>Add new release for the application</Text> <Text>Add new release for the application</Text>
</div> </div>
<Link <Link
to={`/publisher/apps/${app.deviceType}/${app.id}/add-release`} to={{
pathname: `/publisher/apps/${app.deviceType}/${app.id}/add-release`,
state: {
fullAppDetails: app.applicationReleases,
},
}}
> >
<Button htmlType="button" type="primary" size="small"> <Button htmlType="button" type="primary" size="small">
Add Add

@ -27,6 +27,7 @@ import {
Steps, Steps,
Alert, Alert,
Tabs, Tabs,
Tooltip,
} from 'antd'; } from 'antd';
import axios from 'axios'; import axios from 'axios';
import ReactQuill from 'react-quill'; import ReactQuill from 'react-quill';
@ -198,6 +199,35 @@ class LifeCycle extends React.Component {
this.setState({ current }); this.setState({ current });
}; };
/*
Function to check if the same app releases are in published
state or not and assigned a boolean value to disable
the publish button if an app release is already published
*/
checkReleaseLifeCycleStatus = (proceedingStates, lifecycleState) => {
if (typeof this.props.appReleases !== 'undefined') {
const currentAppUUID = this.props.uuid;
let appReleases = this.props.appReleases.fullAppDetails;
let appRelease;
let isPublished;
for (let i = 0; i < appReleases.length; i++) {
appRelease = appReleases[i];
if (
currentAppUUID !== appRelease.uuid &&
appRelease.currentStatus === 'PUBLISHED' &&
proceedingStates.includes('PUBLISHED') &&
lifecycleState === 'PUBLISHED'
) {
isPublished = true;
return isPublished;
}
}
isPublished = false;
return isPublished;
}
return false;
};
render() { render() {
const { const {
currentStatus, currentStatus,
@ -207,6 +237,7 @@ class LifeCycle extends React.Component {
lifeCycleStates, lifeCycleStates,
} = this.state; } = this.state;
const { lifecycle } = this.props; const { lifecycle } = this.props;
const text = <span>Already an app is in publish state</span>;
let proceedingStates = []; let proceedingStates = [];
if ( if (
lifecycle !== null && lifecycle !== null &&
@ -247,17 +278,33 @@ class LifeCycle extends React.Component {
<p>{step.text}</p> <p>{step.text}</p>
{proceedingStates.map(lifecycleState => { {proceedingStates.map(lifecycleState => {
return ( return (
<Button // eslint-disable-next-line react/jsx-key
size={'small'} <Tooltip
style={{ marginRight: 3 }} title={
onClick={() => this.checkReleaseLifeCycleStatus(
this.showReasonModal(lifecycleState) proceedingStates,
lifecycleState,
) === true
? text
: ''
} }
key={lifecycleState}
type={'primary'}
> >
{lifecycleState} <Button
</Button> size={'small'}
style={{ marginRight: 3 }}
disabled={this.checkReleaseLifeCycleStatus(
proceedingStates,
lifecycleState,
)}
onClick={() =>
this.showReasonModal(lifecycleState)
}
key={lifecycleState}
type={'primary'}
>
{lifecycleState}
</Button>
</Tooltip>
); );
})} })}
</div> </div>

@ -232,6 +232,7 @@ class Release extends React.Component {
this.changeCurrentLifecycleStatus this.changeCurrentLifecycleStatus
} }
lifecycle={lifecycle} lifecycle={lifecycle}
appReleases={this.props.location.state}
/> />
)} )}
</Skeleton> </Skeleton>

Loading…
Cancel
Save