mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-27 13:49:10 +02:00
chore: set up context for sidebar CRs
This commit is contained in:
parent
e04bccace5
commit
e98fbf82cb
@ -1,4 +1,4 @@
|
||||
import { VFC } from 'react';
|
||||
import { useState, VFC } from 'react';
|
||||
import { Box, Button, styled, Typography } from '@mui/material';
|
||||
import { DynamicSidebarModal } from 'component/common/SidebarModal/SidebarModal';
|
||||
import { PageContent } from 'component/common/PageContent/PageContent';
|
||||
@ -11,6 +11,7 @@ import useToast from 'hooks/useToast';
|
||||
import { formatUnknownError } from 'utils/formatUnknownError';
|
||||
import { EnvironmentChangeRequest } from './EnvironmentChangeRequest/EnvironmentChangeRequest';
|
||||
import { ReviewChangesHeader } from './ReviewChangesHeader/ReviewChangesHeader';
|
||||
import { ChangeRequestPlausibleProvider } from '../ChangeRequestContext';
|
||||
|
||||
interface IChangeRequestSidebarProps {
|
||||
open: boolean;
|
||||
@ -76,15 +77,18 @@ export const ChangeRequestSidebar: VFC<IChangeRequestSidebarProps> = ({
|
||||
loading,
|
||||
refetch: refetchChangeRequest,
|
||||
} = usePendingChangeRequests(project);
|
||||
const { changeState, discardDraft } = useChangeRequestApi();
|
||||
const { discardDraft } = useChangeRequestApi();
|
||||
const { setToastApiError } = useToast();
|
||||
const [
|
||||
changeRequestChangesWillOverwrite,
|
||||
setChangeRequestChangesWillOverwrite,
|
||||
] = useState(false);
|
||||
|
||||
const onReview = async (draftId: number, comment?: string) => {
|
||||
const onReview = async (
|
||||
changeState: (project: string) => Promise<void>,
|
||||
) => {
|
||||
try {
|
||||
await changeState(project, draftId, 'Draft', {
|
||||
state: 'In review',
|
||||
comment,
|
||||
});
|
||||
await changeState(project);
|
||||
refetchChangeRequest();
|
||||
} catch (error: unknown) {
|
||||
setToastApiError(formatUnknownError(error));
|
||||
@ -130,19 +134,29 @@ export const ChangeRequestSidebar: VFC<IChangeRequestSidebarProps> = ({
|
||||
header={<ReviewChangesHeader />}
|
||||
>
|
||||
{data?.map((environmentChangeRequest) => (
|
||||
<EnvironmentChangeRequest
|
||||
<ChangeRequestPlausibleProvider
|
||||
key={environmentChangeRequest.id}
|
||||
environmentChangeRequest={environmentChangeRequest}
|
||||
onClose={onClose}
|
||||
onReview={onReview}
|
||||
onDiscard={onDiscard}
|
||||
value={{
|
||||
willOverwriteStrategyChanges:
|
||||
changeRequestChangesWillOverwrite,
|
||||
registerWillOverwriteStrategyChanges: () =>
|
||||
setChangeRequestChangesWillOverwrite(true),
|
||||
}}
|
||||
>
|
||||
<ChangeRequest
|
||||
changeRequest={environmentChangeRequest}
|
||||
onNavigate={onClose}
|
||||
onRefetch={refetchChangeRequest}
|
||||
/>
|
||||
</EnvironmentChangeRequest>
|
||||
<EnvironmentChangeRequest
|
||||
key={environmentChangeRequest.id}
|
||||
environmentChangeRequest={environmentChangeRequest}
|
||||
onClose={onClose}
|
||||
onReview={onReview}
|
||||
onDiscard={onDiscard}
|
||||
>
|
||||
<ChangeRequest
|
||||
changeRequest={environmentChangeRequest}
|
||||
onNavigate={onClose}
|
||||
onRefetch={refetchChangeRequest}
|
||||
/>
|
||||
</EnvironmentChangeRequest>
|
||||
</ChangeRequestPlausibleProvider>
|
||||
))}
|
||||
</StyledPageContent>
|
||||
</DynamicSidebarModal>
|
||||
|
@ -23,6 +23,7 @@ import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
|
||||
import Input from 'component/common/Input/Input';
|
||||
import { ChangeRequestTitle } from './ChangeRequestTitle';
|
||||
import { UpdateCount } from 'component/changeRequest/UpdateCount';
|
||||
import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useChangeRequestApi';
|
||||
|
||||
const SubmitChangeRequestButton: FC<{ onClick: () => void; count: number }> = ({
|
||||
onClick,
|
||||
@ -56,7 +57,7 @@ const ChangeRequestContent = styled(Box)(({ theme }) => ({
|
||||
export const EnvironmentChangeRequest: FC<{
|
||||
environmentChangeRequest: ChangeRequestType;
|
||||
onClose: () => void;
|
||||
onReview: (id: number, comment?: string) => void;
|
||||
onReview: (changeState: (project: string) => Promise<void>) => void;
|
||||
onDiscard: (id: number) => void;
|
||||
}> = ({ environmentChangeRequest, onClose, onReview, onDiscard, children }) => {
|
||||
const theme = useTheme();
|
||||
@ -64,6 +65,12 @@ export const EnvironmentChangeRequest: FC<{
|
||||
const [commentText, setCommentText] = useState('');
|
||||
const { user } = useAuthUser();
|
||||
const [title, setTitle] = useState(environmentChangeRequest.title);
|
||||
const { changeState } = useChangeRequestApi();
|
||||
const sendToReview = async (project: string) =>
|
||||
changeState(project, environmentChangeRequest.id, 'Draft', {
|
||||
state: 'In review',
|
||||
comment: commentText,
|
||||
});
|
||||
|
||||
return (
|
||||
<Box key={environmentChangeRequest.id}>
|
||||
@ -141,12 +148,7 @@ export const EnvironmentChangeRequest: FC<{
|
||||
show={
|
||||
<>
|
||||
<SubmitChangeRequestButton
|
||||
onClick={() =>
|
||||
onReview(
|
||||
environmentChangeRequest.id,
|
||||
commentText,
|
||||
)
|
||||
}
|
||||
onClick={() => onReview(sendToReview)}
|
||||
count={changesCount(
|
||||
environmentChangeRequest,
|
||||
)}
|
||||
|
Loading…
Reference in New Issue
Block a user