Skip to content

Commit cd52572

Browse files
ZabilsyaZabilsya
andauthored
[DOP-22031] update transfer (#46)
Co-authored-by: Zabilsya <[email protected]>
1 parent ffc008e commit cd52572

File tree

24 files changed

+148
-21
lines changed

24 files changed

+148
-21
lines changed

src/app/config/router/instance.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
CreateConnectionPage,
1313
UpdateConnectionPage,
1414
} from '@pages/connection';
15-
import { CreateTransferPage, TransferDetailPage, TransferListPage } from '@pages/transfer';
15+
import { CreateTransferPage, TransferDetailPage, TransferListPage, UpdateTransferPage } from '@pages/transfer';
1616
import { RunDetailPage } from '@pages/run';
1717

1818
import { ErrorBoundary, NotFoundError } from '../errorBoundary';
@@ -113,14 +113,18 @@ export const router = createBrowserRouter([
113113
path: '/transfers/:id',
114114
element: <TransferDetailPage />,
115115
},
116-
{
117-
path: '/transfers/runs/:id',
118-
element: <RunDetailPage />,
119-
},
120116
{
121117
path: '/transfers/create',
122118
element: <CreateTransferPage />,
123119
},
120+
{
121+
path: '/transfers/:id/update',
122+
element: <UpdateTransferPage />,
123+
},
124+
{
125+
path: '/transfers/runs/:id',
126+
element: <RunDetailPage />,
127+
},
124128
],
125129
},
126130
{

src/entities/transfer/api/transferService.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
GetTransferRequest,
88
GetTransfersRequest,
99
Transfer,
10+
UpdateTransferRequest,
1011
} from './types';
1112

1213
export const transferService = {
@@ -22,6 +23,10 @@ export const transferService = {
2223
return axiosInstance.post(`transfers`, data);
2324
},
2425

26+
updateTransfer: ({ id, ...data }: UpdateTransferRequest): Promise<Transfer> => {
27+
return axiosInstance.patch(`transfers/${id}`, data);
28+
},
29+
2530
deleteTransfer: ({ id }: DeleteTransferRequest): Promise<null> => {
2631
return axiosInstance.delete(`transfers/${id}`);
2732
},

src/entities/transfer/api/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ export interface GetTransferRequest {
8282

8383
export interface CreateTransferRequest extends Omit<Transfer, 'id'> {}
8484

85+
export interface UpdateTransferRequest extends Omit<Transfer, 'group_id'> {}
86+
8587
export interface DeleteTransferRequest {
8688
id: number;
8789
}

src/features/transfer/MutateTransferForm/components/TransferSchedule/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const TransferSchedule = () => {
1111

1212
return (
1313
<>
14-
<Form.Item label="Is scheduled" name="is_scheduled">
14+
<Form.Item label="Is scheduled" name="is_scheduled" valuePropName="checked">
1515
<Switch onChange={handleChangeScheduled} />
1616
</Form.Item>
1717
{isScheduled && (

src/features/transfer/TransferList/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ import { TransferQueryKey, transferService } from '@entities/transfer';
77
import { TRANSFER_LIST_COLUMNS } from './constants';
88
import { TransferListProps } from './types';
99

10-
export const TransferList = memo(({ group, onDeleteRowClick }: TransferListProps) => {
10+
export const TransferList = memo(({ group, onUpdateRowClick, onDeleteRowClick }: TransferListProps) => {
1111
return (
1212
<ManagedTable
1313
queryKey={[TransferQueryKey.GET_TRANSFERS, group.data.id]}
1414
queryFunction={(params) => transferService.getTransfers({ ...params, group_id: group.data.id })}
1515
columns={TRANSFER_LIST_COLUMNS}
1616
isRenderUpdateRowAction={() => hasAccessByUserRole(UserRole.Developer, group.role)}
1717
isRenderDeleteRowAction={() => hasAccessByUserRole(UserRole.Maintainer, group.role)}
18+
onUpdateRowClick={onUpdateRowClick}
1819
onDeleteRowClick={onDeleteRowClick}
1920
rowKey="id"
2021
/>

src/features/transfer/TransferList/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ import { Transfer } from '@entities/transfer';
33

44
export interface TransferListProps {
55
group: Group;
6+
onUpdateRowClick: (transfer: Transfer) => void;
67
onDeleteRowClick: (transfer: Transfer) => void;
78
}

src/pages/group/GroupDetailPage/components/UpdateGroupButton/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { UpdateGroupButtonProps } from './types';
88
export const UpdateGroupButton = ({ groupId }: UpdateGroupButtonProps) => {
99
return (
1010
<Button className={classes.button} type="primary" size="large">
11-
<Link to={`/groups/${groupId}/update`}>Update group</Link>
11+
<Link to={`/groups/${groupId}/update`}>Update Group</Link>
1212
</Button>
1313
);
1414
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import { Typography } from 'antd';
3+
import { PageContentWrapper } from '@shared/ui';
4+
import { useParams } from 'react-router-dom';
5+
import { PageDetailParams, UserRole } from '@shared/types';
6+
import { useGetGroup } from '@entities/group';
7+
import { hasAccessByUserRole } from '@shared/utils';
8+
import { AccessError } from '@shared/config';
9+
import { useGetTransfer } from '@entities/transfer';
10+
import { UpdateTransfer } from '@widgets/transfer';
11+
12+
const { Title } = Typography;
13+
14+
export const UpdateTransferPage = () => {
15+
const params = useParams<PageDetailParams>();
16+
const { data: transfer } = useGetTransfer({ id: Number(params.id) });
17+
const { data: group } = useGetGroup({ id: transfer.group_id });
18+
19+
if (!transfer || !group) {
20+
return null;
21+
}
22+
23+
if (!hasAccessByUserRole(UserRole.Maintainer, group.role)) {
24+
throw new AccessError();
25+
}
26+
27+
return (
28+
<PageContentWrapper width="small">
29+
<Title>Update Transfer</Title>
30+
<UpdateTransfer transfer={transfer} group={group.data} />
31+
</PageContentWrapper>
32+
);
33+
};

src/pages/transfer/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from './TransferListPage';
22
export * from './TransferDetailPage';
33
export * from './CreateTransferPage';
4+
export * from './UpdateTransferPage';

src/widgets/connection/ConnectionDetail/components/DeleteConnectionButton/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ export const DeleteConnectionButton = ({ connection }: DeleteConnectionButtonPro
2121
return (
2222
<>
2323
<Button type="primary" size="large" danger onClick={handleOpenModal}>
24-
Delete connection
24+
Delete Connection
2525
</Button>
2626
<ModalWrapper
27-
title="Delete connection"
27+
title="Delete Connection"
2828
width={DEFAULT_MODAL_DELETE_WIDTH}
2929
open={isOpenedModal}
3030
onCancel={handleCloseModal}

0 commit comments

Comments
 (0)