crpt
This commit is contained in:
61
src/screens/AssemblyScreen/AcceptAssemblyModal.tsx
Normal file
61
src/screens/AssemblyScreen/AcceptAssemblyModal.tsx
Normal file
@@ -0,0 +1,61 @@
|
||||
import AcceptModal, {AcceptModalProps} from "../../components/Modals/AcceptModal/AcceptModal";
|
||||
import assemblyApi, {AssemblyCreationStatusCode, CreateAssemblyResponse} from "../../api/assemblyApi";
|
||||
import Toast from "react-native-toast-message";
|
||||
import {openCancelAssemblyModal} from "../../features/cancelAssemblyModal/cancelAssemblyModalSlice";
|
||||
import React from "react";
|
||||
import {RootState, useAppDispatch} from "../../redux/store";
|
||||
import {closeAcceptModal} from "../../features/assembly/assemblySlice";
|
||||
import {useSelector} from "react-redux";
|
||||
|
||||
type RestProps = {
|
||||
onCreated: (response: CreateAssemblyResponse) => void;
|
||||
}
|
||||
type Props = RestProps;
|
||||
|
||||
const CreateAssemblyModal = (props: Props) => {
|
||||
const {onCreated} = props
|
||||
const {order, acceptModalVisible} = useSelector((state: RootState) => state.assembly);
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const showCreateStatusToast = (ok: boolean, message: string) => {
|
||||
Toast.show({
|
||||
type: ok ? 'success' : 'error',
|
||||
text1: 'Создание сборки',
|
||||
text2: message
|
||||
});
|
||||
}
|
||||
|
||||
const onError = (response: CreateAssemblyResponse) => {
|
||||
const {statusCode, assemblyId, userName} = response;
|
||||
if (statusCode !== AssemblyCreationStatusCode.ASSEMBLY_ALREADY_EXISTS) return;
|
||||
const message =
|
||||
`Заказ собирает ${userName}. Отменить и начать сборку на ваш аккаунт?\n\n` +
|
||||
'Удостоверьтесь, что текущая сборка ошибочна и никто другой её не выполняет.';
|
||||
|
||||
dispatch(openCancelAssemblyModal({assemblyId: assemblyId, message: message}));
|
||||
|
||||
}
|
||||
|
||||
const onAccepted = async () => {
|
||||
if (!order) return
|
||||
const response = await assemblyApi.create(order.databaseId);
|
||||
showCreateStatusToast(response.ok, response.message);
|
||||
const handler = response.ok ? onCreated : onError;
|
||||
handler(response);
|
||||
dispatch(closeAcceptModal());
|
||||
}
|
||||
|
||||
const onRefused = async () => {
|
||||
dispatch(closeAcceptModal())
|
||||
}
|
||||
|
||||
return (
|
||||
<AcceptModal
|
||||
visible={acceptModalVisible}
|
||||
text={`Вы уверены что хотите начать сборку заказа ${order?.orderNumber}`}
|
||||
onAccepted={onAccepted}
|
||||
onRefused={onRefused}/>
|
||||
)
|
||||
}
|
||||
|
||||
export default CreateAssemblyModal;
|
||||
Reference in New Issue
Block a user