-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.tsx
More file actions
44 lines (38 loc) · 1.62 KB
/
index.tsx
File metadata and controls
44 lines (38 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { ManagedForm } from '@shared/ui';
import { useNavigate } from 'react-router-dom';
import { prepareTransferResourcesRequest, Transfer, TransferQueryKey, transferService } from '@entities/transfer';
import { MutateTransferForm } from '@features/transfer';
import { prepareTransformationFormError, prepareTransformationRequest } from '@entities/transformation';
import { useTranslation } from 'react-i18next';
import { CreateTransferForm, CreateTransferProps } from './types';
import { CREATE_TRANSFER_INITIAL_VALUES } from './constants';
export const CreateTransfer = ({ group }: CreateTransferProps) => {
const { t } = useTranslation('transfer');
const navigate = useNavigate();
const handleCreateTransfer = ({ transformations, resources, ...values }: CreateTransferForm) => {
return transferService.createTransfer({
group_id: group.id,
transformations: prepareTransformationRequest(transformations),
resources: prepareTransferResourcesRequest(resources),
...values,
});
};
const onSuccess = (response: Transfer) => {
navigate(`/transfers/${response.id}`);
};
const onCancel = () => {
navigate('/transfers');
};
return (
<ManagedForm<CreateTransferForm, Transfer>
initialValues={CREATE_TRANSFER_INITIAL_VALUES}
mutationFunction={handleCreateTransfer}
onSuccess={onSuccess}
successMessage={t('createTransferSuccess')}
prepareFormErrors={prepareTransformationFormError}
keysInvalidateQueries={[[{ queryKey: [TransferQueryKey.GET_TRANSFERS, group.id] }]]}
>
<MutateTransferForm group={group} onCancel={onCancel} />
</ManagedForm>
);
};