mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
min approvals from cr not config (#2556)
This commit is contained in:
parent
87211dd22e
commit
9f983f4ed6
@ -197,8 +197,7 @@ export const ChangeRequestOverview: FC = () => {
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<ChangeRequestReviewStatus
|
<ChangeRequestReviewStatus
|
||||||
state={changeRequest.state}
|
changeRequest={changeRequest}
|
||||||
environment={changeRequest.environment}
|
|
||||||
/>
|
/>
|
||||||
<StyledButtonBox>
|
<StyledButtonBox>
|
||||||
<ConditionallyRender
|
<ConditionallyRender
|
||||||
|
@ -11,36 +11,14 @@ import {
|
|||||||
StyledReviewTitle,
|
StyledReviewTitle,
|
||||||
StyledDivider,
|
StyledDivider,
|
||||||
} from './ChangeRequestReviewStatus.styles';
|
} from './ChangeRequestReviewStatus.styles';
|
||||||
import { ChangeRequestState } from 'component/changeRequest/changeRequest.types';
|
import {
|
||||||
import { useRequiredPathParam } from '../../../../hooks/useRequiredPathParam';
|
ChangeRequestState,
|
||||||
import { useChangeRequestConfig } from '../../../../hooks/api/getters/useChangeRequestConfig/useChangeRequestConfig';
|
IChangeRequest,
|
||||||
|
} from 'component/changeRequest/changeRequest.types';
|
||||||
|
|
||||||
interface ISuggestChangeReviewsStatusProps {
|
interface ISuggestChangeReviewsStatusProps {
|
||||||
state: ChangeRequestState;
|
changeRequest: IChangeRequest;
|
||||||
environment: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useChangeRequestRequiredApprovals = (projectId: string) => {
|
|
||||||
const { data } = useChangeRequestConfig(projectId);
|
|
||||||
|
|
||||||
const getChangeRequestRequiredApprovals = React.useCallback(
|
|
||||||
(environment: string): number => {
|
|
||||||
const config = data.find(draft => {
|
|
||||||
return (
|
|
||||||
draft.environment === environment &&
|
|
||||||
draft.changeRequestEnabled
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
return config?.requiredApprovals || 1;
|
|
||||||
},
|
|
||||||
[data]
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
getChangeRequestRequiredApprovals,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const resolveBorder = (state: ChangeRequestState, theme: Theme) => {
|
const resolveBorder = (state: ChangeRequestState, theme: Theme) => {
|
||||||
if (state === 'Approved') {
|
if (state === 'Approved') {
|
||||||
return `2px solid ${theme.palette.success.main}`;
|
return `2px solid ${theme.palette.success.main}`;
|
||||||
@ -76,30 +54,35 @@ const resolveIconColors = (state: ChangeRequestState, theme: Theme) => {
|
|||||||
|
|
||||||
export const ChangeRequestReviewStatus: FC<
|
export const ChangeRequestReviewStatus: FC<
|
||||||
ISuggestChangeReviewsStatusProps
|
ISuggestChangeReviewsStatusProps
|
||||||
> = ({ state, environment }) => {
|
> = ({ changeRequest }) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
return (
|
return (
|
||||||
<StyledOuterContainer>
|
<StyledOuterContainer>
|
||||||
<StyledButtonContainer {...resolveIconColors(state, theme)}>
|
<StyledButtonContainer
|
||||||
|
{...resolveIconColors(changeRequest.state, theme)}
|
||||||
|
>
|
||||||
<ChangesAppliedIcon
|
<ChangesAppliedIcon
|
||||||
style={{
|
style={{
|
||||||
transform: `scale(1.5)`,
|
transform: `scale(1.5)`,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</StyledButtonContainer>
|
</StyledButtonContainer>
|
||||||
<StyledReviewStatusContainer border={resolveBorder(state, theme)}>
|
<StyledReviewStatusContainer
|
||||||
<ResolveComponent state={state} environment={environment} />
|
border={resolveBorder(changeRequest.state, theme)}
|
||||||
|
>
|
||||||
|
<ResolveComponent changeRequest={changeRequest} />
|
||||||
</StyledReviewStatusContainer>
|
</StyledReviewStatusContainer>
|
||||||
</StyledOuterContainer>
|
</StyledOuterContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
interface IResolveComponentProps {
|
interface IResolveComponentProps {
|
||||||
state: ChangeRequestState;
|
changeRequest: IChangeRequest;
|
||||||
environment: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ResolveComponent = ({ state, environment }: IResolveComponentProps) => {
|
const ResolveComponent = ({ changeRequest }: IResolveComponentProps) => {
|
||||||
|
const { state } = changeRequest;
|
||||||
|
|
||||||
if (!state) {
|
if (!state) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -116,7 +99,7 @@ const ResolveComponent = ({ state, environment }: IResolveComponentProps) => {
|
|||||||
return <Cancelled />;
|
return <Cancelled />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <ReviewRequired environment={environment} />;
|
return <ReviewRequired minApprovals={changeRequest.minApprovals} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
const Approved = () => {
|
const Approved = () => {
|
||||||
@ -151,15 +134,11 @@ const Approved = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
interface IReviewRequiredProps {
|
interface IReviewRequiredProps {
|
||||||
environment: string;
|
minApprovals: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ReviewRequired = ({ environment }: IReviewRequiredProps) => {
|
const ReviewRequired = ({ minApprovals }: IReviewRequiredProps) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const projectId = useRequiredPathParam('projectId');
|
|
||||||
const { getChangeRequestRequiredApprovals } =
|
|
||||||
useChangeRequestRequiredApprovals(projectId);
|
|
||||||
const approvals = getChangeRequestRequiredApprovals(environment);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -170,8 +149,8 @@ const ReviewRequired = ({ environment }: IReviewRequiredProps) => {
|
|||||||
Review required
|
Review required
|
||||||
</StyledReviewTitle>
|
</StyledReviewTitle>
|
||||||
<Typography>
|
<Typography>
|
||||||
At least {approvals} approvals must be submitted before
|
At least {minApprovals} approval(s) must be submitted
|
||||||
changes can be applied
|
before changes can be applied
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
</StyledFlexAlignCenterBox>
|
</StyledFlexAlignCenterBox>
|
||||||
|
@ -6,6 +6,7 @@ export interface IChangeRequest {
|
|||||||
state: ChangeRequestState;
|
state: ChangeRequestState;
|
||||||
project: string;
|
project: string;
|
||||||
environment: string;
|
environment: string;
|
||||||
|
minApprovals: number;
|
||||||
createdBy: Pick<IUser, 'id' | 'username' | 'imageUrl'>;
|
createdBy: Pick<IUser, 'id' | 'username' | 'imageUrl'>;
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
features: IChangeRequestFeature[];
|
features: IChangeRequestFeature[];
|
||||||
|
Loading…
Reference in New Issue
Block a user