diff --git a/src/api/assemblyApi.ts b/src/api/assemblyApi.ts index 9999ba7..b765719 100644 --- a/src/api/assemblyApi.ts +++ b/src/api/assemblyApi.ts @@ -1,6 +1,5 @@ import apiClient from "./apiClient"; import {Assembly} from "../types/assembly"; -import {closeCancelAssemblyModal} from "../features/cancelAssemblyModal/cancelAssemblyModalSlice"; const router = '/assembly'; export type CreateAssemblyResponse = { @@ -39,6 +38,10 @@ const assemblyApi = { let response = await apiClient.post(`${router}/confirm`, {assemblyId}); return response.data; }, + confirmCurrent: async (): Promise<{ ok: boolean, message: string }> => { + let response = await apiClient.post(`${router}/confirmCurrent`); + return response.data; + }, cancelById: async (assemblyId: number): Promise<{ ok: boolean, message: string }> => { let response = await apiClient.post(`${router}/cancelById`, {assemblyId}); return response.data; diff --git a/src/assets/icons/settings/check.png b/src/assets/icons/settings/check.png new file mode 100644 index 0000000..cc1cc5d Binary files /dev/null and b/src/assets/icons/settings/check.png differ diff --git a/src/screens/AssemblyScreen/AssemblyControls.tsx b/src/screens/AssemblyScreen/AssemblyControls.tsx index ec03bce..b6bc946 100644 --- a/src/screens/AssemblyScreen/AssemblyControls.tsx +++ b/src/screens/AssemblyScreen/AssemblyControls.tsx @@ -221,9 +221,7 @@ const ConfirmedButtons = () => { dispatch(showReward({reward})); dispatch(fetchBalance()) dispatch(refreshTransactions()) - } - dispatch(endAssembly()); navigator.navigate('Barcode'); }) diff --git a/src/screens/AssemblyScreen/AssemblyView.tsx b/src/screens/AssemblyScreen/AssemblyView.tsx index 70407b6..d5113bc 100644 --- a/src/screens/AssemblyScreen/AssemblyView.tsx +++ b/src/screens/AssemblyScreen/AssemblyView.tsx @@ -11,7 +11,6 @@ import AssemblyControls from "./AssemblyControls"; import AcceptAssemblyModal from "./AcceptAssemblyModal"; import assemblyApi, {CreateAssemblyResponse} from "../../api/assemblyApi"; import {setAssembly, startAssembly} from "../../features/assembly/assemblySlice"; -import {ScanCrptContextProvider} from "./contexts/ScanCrptContext"; type Props = { order: Order; @@ -32,7 +31,8 @@ const AssemblyView = (props: Props) => { - + state.scanModal.isVisible); const navigator = useNavigation>(); const navigationState = useNavigationState((state) => state); useEffect(() => { - console.log("state changed") if (!navigationState.history) return; + if (productId < 0) return; + console.log('refreshing orders for productId:', productId); + refresh(); // @ts-ignore let currentTabKey: string = navigationState.history[navigationState.history.length - 1].key; if (currentTabKey.startsWith("Barcode")) if (!isScanModalVisible) dispatch(openScanModal({})); @@ -49,6 +48,7 @@ function BarcodeScreen() { {orders.length > 0 || isUpdating ? { + refresh() }} keyboardShouldPersistTaps={"never"} data={orders} diff --git a/src/screens/BarcodeScreen/useBarcodeOrders.tsx b/src/screens/BarcodeScreen/useBarcodeOrders.tsx index 0f35919..4d6bcf3 100644 --- a/src/screens/BarcodeScreen/useBarcodeOrders.tsx +++ b/src/screens/BarcodeScreen/useBarcodeOrders.tsx @@ -3,8 +3,6 @@ import {RootState} from "../../redux/store"; import {useEffect, useState} from "react"; import {Order} from "../../types/order"; import ordersApi from "../../api/ordersApi"; -import {setOrderBy} from "../../features/ordersFilter/ordersFilterSlice"; -import {setOrder} from "../../features/assembly/assemblySlice"; export type Props = { productId: number; @@ -23,16 +21,19 @@ const useBarcodeOrders = (props: Props) => { city } = useSelector((state: RootState) => state.ordersFilter); const fetchOrders = async (): Promise => { - return ordersApi.getOrdersByProduct({productId, orderBy, shipmentDate, status, shippingWarehouse,city, desc}); + return ordersApi.getOrdersByProduct({productId, orderBy, shipmentDate, status, shippingWarehouse, city, desc}); } - useEffect(() => { - if (isVisible || productId < 0) return; + const refresh = () => { setOrders([]); setIsUpdating(true); fetchOrders().then((fetchedOrders) => { setOrders(fetchedOrders); setIsUpdating(false); }); + } + useEffect(() => { + if (isVisible || productId < 0) return; + refresh() }, [ productId, isVisible, @@ -40,9 +41,14 @@ const useBarcodeOrders = (props: Props) => { orderBy, shipmentDate, status, - shippingWarehouse]); + shippingWarehouse, + ]); - return {orders, isUpdating} + return { + orders, + refresh, + isUpdating + } } export default useBarcodeOrders; \ No newline at end of file diff --git a/src/screens/ProfileScreen/SettingsView.tsx b/src/screens/ProfileScreen/SettingsView.tsx index 28fd0a6..258482e 100644 --- a/src/screens/ProfileScreen/SettingsView.tsx +++ b/src/screens/ProfileScreen/SettingsView.tsx @@ -37,9 +37,6 @@ const SettingsView: FC = () => { showsHorizontalScrollIndicator={false} contentContainerStyle={styles.actionsCarousel} > - - - { assemblyApi.cancel().then(response => { @@ -51,6 +48,17 @@ const SettingsView: FC = () => { dispatch(reset()); }) }} icon={require('assets/icons/settings/close.png')} title={'Отменить сборку'}/> + { + assemblyApi.confirmCurrent().then(response => { + + Toast.show({ + type: response.ok ? "success" : "error", + text1: "Закрытие сборки", + text2: response.message, + }); + dispatch(reset()); + }) + }} icon={require('assets/icons/settings/check.png')} title={'Закрыть сборку'}/> ) }