npm-pkg-hook 1.3.9 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +2 -10
- package/.env +5 -1
- package/dist/index.js +17953 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +17711 -0
- package/dist/index.mjs.map +1 -0
- package/eslint.config.mjs +154 -0
- package/expire.json +1 -0
- package/index.d.ts +2 -0
- package/jest.config.ts +9 -0
- package/package.json +45 -36
- package/src/config/client/errors.ts +39 -0
- package/src/config/content/en.json +5 -0
- package/src/config/content/es.json +5 -0
- package/src/config/content/index.ts +16 -0
- package/src/hooks/addTenMinutes/index.ts +14 -0
- package/src/hooks/calculateLogLatHaversine/index.ts +41 -0
- package/src/hooks/completeSchedules/index.ts +22 -0
- package/src/hooks/convertToMilitaryTime/index.ts +18 -0
- package/src/hooks/generateStoreURL/index.ts +41 -0
- package/src/hooks/generateTemplate/index.ts +66 -0
- package/src/hooks/getCardType/index.ts +24 -0
- package/src/hooks/getCategoriesWithProduct/{index.js → index.ts} +7 -7
- package/src/hooks/getGlobalSession/index.ts +69 -0
- package/src/hooks/getSession/index.ts +72 -0
- package/src/hooks/getTodayTimestamps/index.ts +70 -0
- package/src/hooks/getTotalHours/index.ts +76 -0
- package/src/hooks/handleLogin/index.ts +14 -0
- package/src/hooks/index.ts +154 -0
- package/src/hooks/isTokenExpired/index.ts +17 -0
- package/src/hooks/newMessageSubscription/index.ts +28 -0
- package/src/hooks/newStoreOrderSubscription/index.ts +26 -0
- package/src/hooks/{useStatusOpenStore/helpers/index.js → statusOpenStores/helpers/index.ts} +24 -1
- package/src/hooks/statusOpenStores/index.ts +221 -0
- package/src/hooks/updateExtProductFoodsOptional/{index.js → index.ts} +15 -6
- package/src/hooks/useAcumulateDate/index.ts +18 -0
- package/src/hooks/useAllStoresPendingToRegister/index.ts +37 -0
- package/src/hooks/useAmountInput/index.ts +127 -0
- package/src/hooks/useAnimationText/{index.jsx → index.ts} +2 -2
- package/src/hooks/useAsideCart/index.ts +217 -0
- package/src/hooks/useBanner/{index.js → index.ts} +2 -1
- package/src/hooks/useCart/{queries.js → queries.ts} +11 -1
- package/src/hooks/useCart/useCart/helpers/{index.js → index.ts} +10 -6
- package/src/hooks/useCart/useCart/{index.js → index.ts} +58 -44
- package/src/hooks/useCart/useGetCart/{index.js → index.ts} +6 -3
- package/src/hooks/useCatWithProduct/{index.js → index.ts} +17 -7
- package/src/hooks/useCatWithProduct/{queries.js → queries.ts} +50 -23
- package/src/hooks/useCatWithProduct/types/index.ts +104 -0
- package/src/hooks/useCatWithProductClient/{index.js → index.ts} +19 -18
- package/src/hooks/useCatWithProductClient/{queries.js → queries.ts} +1 -0
- package/src/hooks/useCategoriesProduct/{index.js → index.ts} +3 -1
- package/src/hooks/useCategoriesProduct/{queries.js → queries.ts} +2 -2
- package/src/hooks/useCategoryInStore/index.ts +167 -0
- package/src/hooks/useCategoryInStore/{queries.js → queries.ts} +2 -2
- package/src/hooks/useCategoryStore/{index.js → index.ts} +4 -3
- package/src/hooks/useCategoryStore/{queries.js → queries.ts} +2 -2
- package/src/hooks/useChartData/{index.js → index.ts} +31 -34
- package/src/hooks/useChartData/useChartData/{index.js → index.ts} +31 -30
- package/src/hooks/useChartData/useChartDataAllOrders/{index.js → index.ts} +4 -4
- package/src/hooks/useChatRoomSubscription/index.ts +28 -0
- package/src/hooks/useCheckbox/{index.js → index.ts} +1 -1
- package/src/hooks/useCities/index.ts +14 -0
- package/src/hooks/useCities/queries.ts +12 -0
- package/src/hooks/useClients/{index.js → index.ts} +36 -10
- package/src/hooks/useClients/queries.ts +215 -0
- package/src/hooks/useColorByLetters/helpers/alea.ts +73 -0
- package/src/hooks/useColorByLetters/helpers/colors.ts +45 -0
- package/src/hooks/useColorByLetters/helpers/index.ts +24 -0
- package/src/hooks/useColorByLetters/helpers/mersenne_twister.ts +118 -0
- package/src/hooks/useColorByLetters/index.ts +24 -0
- package/src/hooks/useConnection/index.ts +24 -0
- package/src/hooks/useCountries/index.ts +20 -0
- package/src/hooks/useCountries/queries.ts +12 -0
- package/src/hooks/useCreateDeliveryTime/index.ts +51 -0
- package/src/hooks/useCreateOrderStatusType/index.ts +134 -0
- package/src/hooks/useCreateProduct/helpers/index.ts +23 -0
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/{index.js → index.ts} +1 -1
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/{index.js → index.ts} +14 -8
- package/src/hooks/useCreateProduct/index.ts +337 -0
- package/src/hooks/useCreateStorePendingToRegister/index.ts +17 -0
- package/src/hooks/useCreateStorePendingToRegister/queries.ts +10 -0
- package/src/hooks/useDashboardComponents/index.ts +50 -0
- package/src/hooks/useDeleteExtraProductFoods/index.ts +13 -0
- package/src/hooks/useDeleteSubProductOptional/{index.js → index.ts} +5 -3
- package/src/hooks/useDeliveryTime/index.ts +29 -0
- package/src/hooks/useDepartments/index.ts +14 -0
- package/src/hooks/useDepartments/queries.ts +13 -0
- package/src/hooks/useDessert/{index.js → index.ts} +162 -114
- package/src/hooks/useDessertWithPrice/helpers/index.ts +76 -0
- package/src/hooks/useDessertWithPrice/index.ts +381 -0
- package/src/hooks/useDessertWithPrice/queries.ts +18 -0
- package/src/hooks/useDevWS/index.ts +53 -0
- package/src/hooks/useDevices/index.ts +2 -0
- package/src/hooks/useDevices/queries.ts +28 -0
- package/src/hooks/useDevices/useGetDevices.ts +28 -0
- package/src/hooks/useDevices/useRegisterDevices.ts +75 -0
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +21 -0
- package/src/hooks/useDownloadReports/index.ts +2 -0
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +105 -0
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +116 -0
- package/src/hooks/useDrag/{index.js → index.ts} +16 -0
- package/src/hooks/useDropzone/{index.js → index.ts} +2 -2
- package/src/hooks/useDynamicAuth/{index.js → index.ts} +2 -1
- package/src/hooks/useEditCategory/{index.js → index.ts} +14 -14
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +28 -0
- package/src/hooks/useEditOneExtProductFoodOptional/{queries.js → queries.ts} +2 -2
- package/src/hooks/useEditSubProductOptional/index.ts +12 -0
- package/src/hooks/useEmployee/index.ts +18 -0
- package/src/hooks/useEmployee/queries.ts +85 -0
- package/src/hooks/useEmployee/useCreateEmployee.ts +90 -0
- package/src/hooks/useEvent/{index.js → index.ts} +1 -0
- package/src/hooks/useFavoriteStores/index.ts +31 -0
- package/src/hooks/useFavoriteStores/queries.ts +54 -0
- package/src/hooks/useFetchMoreInteractions/index.jsx +26 -26
- package/src/hooks/useFilterConfigs/index.ts +173 -0
- package/src/hooks/useFingerprintjs/{index.js → index.ts} +32 -7
- package/src/hooks/useFormTools/index.ts +143 -0
- package/src/hooks/useFormatDate/index.ts +91 -0
- package/src/hooks/useFullScreenMode/{index.js → index.ts} +1 -5
- package/src/hooks/useGetAllLocationUser/index.ts +13 -0
- package/src/hooks/useGetAllLocationUser/queries.ts +44 -0
- package/src/hooks/{useSales/useGetAllSales/index.js → useGetAllSales/index.ts} +3 -2
- package/src/hooks/useGetCookies/index.ts +43 -0
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/{index.js → index.ts} +2 -1
- package/src/hooks/useGetFoodRecomended/{index.js → index.ts} +2 -1
- package/src/hooks/useGetMessagesToRoom/index.ts +23 -0
- package/src/hooks/useGetMinPrice/{index.js → index.ts} +2 -1
- package/src/hooks/useGetOneStoreRating/{index.js → index.ts} +2 -1
- package/src/hooks/useGetSalesAmountToday/index.ts +31 -0
- package/src/hooks/useGetStoreCookie/index.ts +21 -0
- package/src/hooks/useGoogleLogin/{index.js → index.ts} +14 -5
- package/src/hooks/useHover/{index.js → index.ts} +3 -0
- package/src/hooks/useImageOptimization/{index.js → index.ts} +4 -0
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +146 -0
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +54 -0
- package/src/hooks/useImageUploaderProduct/helper/index.ts +5 -0
- package/src/hooks/useImageUploaderProduct/index.ts +295 -0
- package/src/hooks/useImageWeight/{index.js → index.ts} +4 -0
- package/src/hooks/useImagesStore/index.ts +227 -0
- package/src/hooks/useImagesStore/{queries.js → queries.ts} +4 -68
- package/src/hooks/useImagesStore/utils/index.ts +4 -0
- package/src/hooks/useIncomingOrders/index.ts +11 -0
- package/src/hooks/useIncomingOrders/queries.ts +87 -0
- package/src/hooks/useIntersection/{index.js → index.ts} +1 -1
- package/src/hooks/useInventory/index.ts +2 -0
- package/src/hooks/useInventory/queries.ts +58 -0
- package/src/hooks/useInventory/useGetProductsInStock.ts +16 -0
- package/src/hooks/useInventory/useUpdateManageStock.ts +41 -0
- package/src/hooks/useLazyScript/{index.js → index.ts} +3 -0
- package/src/hooks/useLocalBackendIp/index.ts +34 -0
- package/src/hooks/useLocalSorage/{index.js → index.ts} +3 -3
- package/src/hooks/useLocationManager/index.ts +63 -0
- package/src/hooks/useLoginEmployeeInStore/index.ts +38 -0
- package/src/hooks/useLogout/helpers/BroadcastChannel.ts +74 -0
- package/src/hooks/useLogout/helpers/apiBaseUrl.ts +12 -0
- package/src/hooks/useLogout/helpers/fetchData.ts +37 -0
- package/src/hooks/useLogout/helpers/getCsrfToken.ts +37 -0
- package/src/hooks/useLogout/helpers/index.ts +65 -0
- package/src/hooks/useLogout/helpers/logger.ts +88 -0
- package/src/hooks/useLogout/helpers/parseUrl.ts +39 -0
- package/src/hooks/useLogout/index.ts +105 -0
- package/src/hooks/useManageNewOrder/helpers/index.ts +45 -0
- package/src/hooks/useManageNewOrder/index.ts +104 -0
- package/src/hooks/useManageQueryParams/index.ts +120 -0
- package/src/hooks/useMobile/index.ts +65 -0
- package/src/hooks/useModules/helpers/index.ts +1 -0
- package/src/hooks/useModules/helpers/validateModules.ts +43 -0
- package/src/hooks/useModules/index.ts +124 -0
- package/src/hooks/useMouse/index.ts +55 -0
- package/src/hooks/useOrderStatusTypes/index.ts +2 -0
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +133 -0
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +99 -0
- package/src/hooks/useOrders/index.ts +3 -0
- package/src/hooks/useOrders/queries.ts +99 -0
- package/src/hooks/useOrders/useChangeOrderState/index.ts +128 -0
- package/src/hooks/useOrders/{index.js → useOrdersFromStore/index.ts} +20 -18
- package/src/hooks/usePWAInstall/index.ts +38 -0
- package/src/hooks/usePaymentMethod/index.ts +3 -0
- package/src/hooks/usePaymentMethod/paymentMethod.gql.ts +62 -0
- package/src/hooks/usePaymentMethod/paymentMethod.types.ts +28 -0
- package/src/hooks/usePaymentMethod/useCreatePaymentMethod/index.ts +25 -0
- package/src/hooks/usePaymentMethod/useGetAllPaymentMethods/index.ts +19 -0
- package/src/hooks/usePaymentMethod/useGetPaymentMethod/index.ts +26 -0
- package/src/hooks/usePortFetcher/index.ts +33 -0
- package/src/hooks/usePrintSaleTicket/index.ts +68 -0
- package/src/hooks/useProductsFood/index.ts +341 -0
- package/src/hooks/useProductsFood/{queriesStore.js → queriesStore.ts} +151 -84
- package/src/hooks/useProductsFood/types/index.ts +0 -0
- package/src/hooks/useProductsFood/useEditProduct.ts +49 -0
- package/src/hooks/useProductsFood/usetagsProducts.ts +101 -0
- package/src/hooks/useProviders/useProvidersCreateStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProviders/useProvidersDataStore/{index.js → index.ts} +2 -1
- package/src/hooks/useProvidersStore/{index.js → index.ts} +2 -1
- package/src/hooks/usePushNotificationOrder/index.ts +52 -0
- package/src/hooks/usePushNotifications/helpers/index.ts +123 -0
- package/src/hooks/usePushNotifications/index.ts +150 -0
- package/src/hooks/useQueryLocationsMap/index.ts +20 -0
- package/src/hooks/useQueryLocationsMap/queries.ts +40 -0
- package/src/hooks/useRatingArrayData/{index.js → index.ts} +4 -4
- package/src/hooks/useRatingArrayData/{queries.js → queries.ts} +1 -1
- package/src/hooks/useReactToPrint/index.ts +4 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/{index.js → index.ts} +2 -1
- package/src/hooks/useRemoveExtraProductFoodsOptional/{queries.js → queries.ts} +4 -4
- package/src/hooks/useReport/{index.js → index.ts} +5 -5
- package/src/hooks/useReport/{queries.js → queries.ts} +4 -55
- package/src/hooks/useRestaurant/helpers/index.ts +28 -0
- package/src/hooks/useRestaurant/helpers/manageStatusOpen.ts +26 -0
- package/src/hooks/useRestaurant/index.ts +71 -0
- package/src/hooks/useRestaurant/{queries.js → queries.ts} +2 -1
- package/src/hooks/useRoads/index.ts +20 -0
- package/src/hooks/useRoads/queries.ts +13 -0
- package/src/hooks/useRoles/index.ts +4 -0
- package/src/hooks/useRoles/queries.ts +70 -0
- package/src/hooks/useRoles/useCreateRole.ts +40 -0
- package/src/hooks/useRoles/useGetRoles.ts +37 -0
- package/src/hooks/useRoles/useRemoveRoles.ts +40 -0
- package/src/hooks/useRoles/useUpdateRolesPriority.ts +44 -0
- package/src/hooks/useSales/helpers/add-product.utils.ts +120 -0
- package/src/hooks/useSales/helpers/apply-discount-to-cart.utils.ts +292 -0
- package/src/hooks/useSales/helpers/comment-product.utils.ts +41 -0
- package/src/hooks/useSales/helpers/constants/index.ts +38 -0
- package/src/hooks/useSales/helpers/extras.utils.ts +42 -0
- package/src/hooks/useSales/helpers/filterProductsByCarProId.utils.ts +17 -0
- package/src/hooks/useSales/helpers/increment-product-quantity.utils.ts +76 -0
- package/src/hooks/useSales/helpers/index.ts +3 -0
- package/src/hooks/useSales/helpers/initializer.utils.ts +22 -0
- package/src/hooks/useSales/helpers/isStockInsufficient.ts +3 -0
- package/src/hooks/useSales/helpers/remove-product.utils.test.ts +49 -0
- package/src/hooks/useSales/helpers/remove-product.utils.ts +34 -0
- package/src/hooks/useSales/helpers/resolveProduct.ts +29 -0
- package/src/hooks/useSales/helpers/useAddToCart.ts +64 -0
- package/src/hooks/useSales/index.ts +1418 -0
- package/src/hooks/useSales/{queries.js → queries.ts} +256 -166
- package/src/hooks/useSales/types/index.ts +206 -0
- package/src/hooks/useSales/types/use-sales.types.ts +8 -0
- package/src/hooks/useSales/useGetSale.ts +21 -0
- package/src/hooks/useSales/useTotalSales.ts +24 -0
- package/src/hooks/useSaveAvailableProduct/helpers/{index.js → index.ts} +4 -4
- package/src/hooks/useSaveAvailableProduct/{index.js → index.ts} +7 -1
- package/src/hooks/useSaveLocation/index.ts +17 -0
- package/src/hooks/useSaveLocation/queries.ts +19 -0
- package/src/hooks/useSchedule/{index.jsx → index.ts} +16 -4
- package/src/hooks/useSchedule/{index.js → schedule.ts} +22 -15
- package/src/hooks/useScheduleData/{index.js → index.ts} +21 -9
- package/src/hooks/useSetImageProducts/index.ts +59 -0
- package/src/hooks/useSetImageProducts/queries.ts +18 -0
- package/src/hooks/useSetSession/{index.js → index.ts} +16 -17
- package/src/hooks/useSetupSchedule/helpers/index.ts +85 -0
- package/src/hooks/useSetupSchedule/index.ts +284 -0
- package/src/hooks/useStatusOpenStore/helpers/index.ts +124 -0
- package/src/hooks/useStatusOpenStore/{index.js → index.ts} +39 -16
- package/src/hooks/useStatusOrdersClient/{index.js → index.ts} +3 -2
- package/src/hooks/useStatusOrdersClient/{queries.js → queries.ts} +2 -2
- package/src/hooks/useStock/index.ts +1 -0
- package/src/hooks/useStock/useStockUpdatedAllSubscription.ts +40 -0
- package/src/hooks/useStockMovements/helpers/index.ts +16 -0
- package/src/hooks/useStockMovements/index.ts +39 -0
- package/src/hooks/useStore/index.ts +83 -0
- package/src/hooks/useStore/{queries.js → queries.ts} +71 -71
- package/src/hooks/useStoreContacts/{index.js → index.ts} +11 -5
- package/src/hooks/useStoreTable/index.ts +2 -0
- package/src/hooks/useStoreTable/queries.ts +47 -0
- package/src/hooks/useStoreTable/useStoreTableCreate.ts +77 -0
- package/src/hooks/useStoreTable/useStoreTables.ts +15 -0
- package/src/hooks/useSubscriptionValidation/index.ts +112 -0
- package/src/hooks/useTagProducts/index.ts +3 -0
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +106 -0
- package/src/hooks/useTagProducts/useGetAllTags.ts +68 -0
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +157 -0
- package/src/hooks/useTheme/index.ts +65 -0
- package/src/hooks/useTimeAgo/{useTimeAgo.js → useTimeAgo.ts} +7 -7
- package/src/hooks/useTokenCards/index.ts +45 -0
- package/src/hooks/useTopProductsMovements/index.ts +27 -0
- package/src/hooks/useTotalAllSales/index.ts +25 -0
- package/src/hooks/useTotalProductsInStock/index.ts +23 -0
- package/src/hooks/useTotalProductsSold/index.ts +23 -0
- package/src/hooks/useTotalProductsSolded/index.ts +20 -0
- package/src/hooks/useUpdateCart/{index.js → index.ts} +3 -2
- package/src/hooks/useUpdateCartCookie/index.ts +60 -0
- package/src/hooks/useUpdateDashboardComponent/index.ts +91 -0
- package/src/hooks/useUpdateExistingOrders/{index.js → index.ts} +5 -11
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.ts +61 -0
- package/src/hooks/useUpdateModuleOrder/index.ts +37 -0
- package/src/hooks/useUpdateMultipleExtProduct/index.ts +34 -0
- package/src/hooks/useUpdateMultipleExtProduct/queries.ts +33 -0
- package/src/hooks/useUpdateMultipleProducts/index.ts +117 -0
- package/src/hooks/useUpdateMultipleProducts/queries.ts +51 -0
- package/src/hooks/useUploadProducts/helpers/index.ts +1 -0
- package/src/hooks/useUploadProducts/helpers/parseNumber.ts +37 -0
- package/src/hooks/useUploadProducts/helpers/validateProductDataExcel.ts +73 -0
- package/src/hooks/useUploadProducts/index.ts +442 -0
- package/src/hooks/useUpsertGoal/index.ts +68 -0
- package/src/hooks/useUser/{index.js → index.ts} +11 -4
- package/src/hooks/useUser/{queries.js → queries.ts} +9 -4
- package/src/hooks/useWeeklyStockMovement/helpers/index.ts +32 -0
- package/src/hooks/useWeeklyStockMovement/index.ts +52 -0
- package/src/hooks/useWindowSize/{index.js → index.ts} +9 -2
- package/src/index.ts +12 -0
- package/src/security/index.ts +1 -0
- package/src/services/index.ts +1 -0
- package/src/utils/UtilDateRange.ts +56 -0
- package/src/utils/generateCode.ts +222 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/utils.ts +344 -0
- package/tsconfig.eslint.json +17 -0
- package/tsconfig.json +21 -0
- package/tsup.config.ts +24 -0
- package/.eslintrc.js +0 -38
- package/.eslintrc.json +0 -127
- package/next.config.js +0 -126
- package/src/config/client/errors.js +0 -26
- package/src/hooks/getGlobalSession/index.js +0 -49
- package/src/hooks/getSession/index.js +0 -18
- package/src/hooks/handleLogin/index.js +0 -10
- package/src/hooks/index.js +0 -77
- package/src/hooks/useAcumulateDate/index.js +0 -16
- package/src/hooks/useAsideCart/index.js +0 -155
- package/src/hooks/useCategoryInStore/index.js +0 -98
- package/src/hooks/useClients/queries.js +0 -127
- package/src/hooks/useConnection/index.js +0 -22
- package/src/hooks/useCreateProduct/index.js +0 -291
- package/src/hooks/useDevices/index.js +0 -35
- package/src/hooks/useDevices/queries.js +0 -19
- package/src/hooks/useEditOneExtProductFoodOptional/index.js +0 -28
- package/src/hooks/useEditSubProductOptional/index.js +0 -11
- package/src/hooks/useEmployee/index.js +0 -13
- package/src/hooks/useEmployee/queries.js +0 -17
- package/src/hooks/useFavoriteStores/index.js +0 -19
- package/src/hooks/useFavoriteStores/queries.js +0 -47
- package/src/hooks/useFormTools/index.js +0 -100
- package/src/hooks/useFormatDate/index.js +0 -33
- package/src/hooks/useGetStoreCookie/index.js +0 -22
- package/src/hooks/useImagesStore/index.js +0 -183
- package/src/hooks/useLogout/helpers/BroadcastChannel.js +0 -32
- package/src/hooks/useLogout/helpers/apiBaseUrl.js +0 -8
- package/src/hooks/useLogout/helpers/fetchData.js +0 -29
- package/src/hooks/useLogout/helpers/getCsrfToken.js +0 -30
- package/src/hooks/useLogout/helpers/index.js +0 -54
- package/src/hooks/useLogout/helpers/logger.js +0 -72
- package/src/hooks/useLogout/helpers/parseUrl.js +0 -36
- package/src/hooks/useLogout/index.js +0 -46
- package/src/hooks/useManageQueryParams/index.js +0 -37
- package/src/hooks/useMobile/index.js +0 -39
- package/src/hooks/useOrders/queries.js +0 -328
- package/src/hooks/useProductsFood/index.js +0 -234
- package/src/hooks/useProductsFood/useEditProduct.js +0 -8
- package/src/hooks/useProductsFood/usetagsProducts.js +0 -94
- package/src/hooks/useRestaurant/index.js +0 -19
- package/src/hooks/useSales/helpers/index.js +0 -8
- package/src/hooks/useSales/index.js +0 -1102
- package/src/hooks/useSales/useGetSale.js +0 -13
- package/src/hooks/useSales/useTotalSales.js +0 -24
- package/src/hooks/useStore/index.js +0 -70
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.js +0 -38
- package/src/index.jsx +0 -4
- package/src/utils/index.js +0 -141
- /package/src/config/client/{index.js → index.ts} +0 -0
- /package/src/hooks/getCategoriesWithProduct/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useAnimationFrame/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useAsideCart/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useCart/{index.js → index.ts} +0 -0
- /package/src/hooks/useDeleteSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useDessert/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useDynamicAuth/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useEditSubProductOptional/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useFetchJson/{index.js → index.ts} +0 -0
- /package/src/hooks/useFormatNumberPhone/{index.js → index.ts} +0 -0
- /package/src/hooks/useGenerateNumberArray/{index.js → index.ts} +0 -0
- /package/src/hooks/useGetFoodRecomended/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetMinPrice/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGetOneStoreRating/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{loadScript.js → loadScript.ts} +0 -0
- /package/src/hooks/useGoogleLogin/{removeScript.js → removeScript.ts} +0 -0
- /package/src/hooks/useInnerHtml/{index.js → index.ts} +0 -0
- /package/src/hooks/useKeypress/{index.js → index.ts} +0 -0
- /package/src/hooks/useLocationNavigate/{index.js → index.ts} +0 -0
- /package/src/{security/index.js → hooks/useManageNewOrder/helpers/mock.ts} +0 -0
- /package/src/hooks/useMutateHeight/{index.js → index.ts} +0 -0
- /package/src/hooks/useOrderClient/{index.js → index.ts} +0 -0
- /package/src/hooks/useProviders/{index.js → index.ts} +0 -0
- /package/src/hooks/useProviders/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useProvidersStore/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useReactToPrint/{index.js → index.txt} +0 -0
- /package/src/hooks/useSaveAvailableProduct/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useSchedule/{queries.js → queries.ts} +0 -0
- /package/src/hooks/useScroll/{index.js → index.ts} +0 -0
- /package/src/hooks/useScrollRotate/{index.js → index.ts} +0 -0
- /package/src/hooks/useSetState/{index.js → index.ts} +0 -0
- /package/src/hooks/useStatusOrdersClient/helpers/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreCalendar/{index.js → index.ts} +0 -0
- /package/src/hooks/useStoreContacts/{queries.js → queries.ts} +0 -0
- /package/src/mock/dessert/{index.js → index.ts} +0 -0
- /package/src/mock/{index.js → index.ts} +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds or removes a comment from a product in cart.
|
|
3
|
+
* - Pure function (reducer-safe)
|
|
4
|
+
* - Supports delete mode
|
|
5
|
+
* - Avoids unnecessary re-renders
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} params
|
|
8
|
+
* @param {Object} params.state - Current reducer state
|
|
9
|
+
* @param {string | number} params.productId - Product identifier
|
|
10
|
+
* @param {string} params.comment - Comment text
|
|
11
|
+
* @param {boolean} params.deleteValue - If true, removes the comment
|
|
12
|
+
*
|
|
13
|
+
* @returns {Object} Updated state
|
|
14
|
+
*/
|
|
15
|
+
export const commentProduct = ({
|
|
16
|
+
state,
|
|
17
|
+
productId,
|
|
18
|
+
comment = '',
|
|
19
|
+
deleteValue = false
|
|
20
|
+
}: {
|
|
21
|
+
state: any;
|
|
22
|
+
productId: string | number;
|
|
23
|
+
comment?: string;
|
|
24
|
+
deleteValue?: boolean;
|
|
25
|
+
}) => {
|
|
26
|
+
if (!productId) return state
|
|
27
|
+
|
|
28
|
+
const PRODUCT = state.PRODUCT.map((item: any) =>
|
|
29
|
+
{return item.pId === productId
|
|
30
|
+
? {
|
|
31
|
+
...item,
|
|
32
|
+
comment: deleteValue ? '' : comment
|
|
33
|
+
}
|
|
34
|
+
: item}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
...state,
|
|
39
|
+
PRODUCT
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SalesState } from '../../types'
|
|
2
|
+
import { TypeDiscount } from '../apply-discount-to-cart.utils'
|
|
3
|
+
|
|
4
|
+
export enum SalesActionTypes {
|
|
5
|
+
ADD_TO_CART = 'ADD_TO_CART',
|
|
6
|
+
ADD_PRODUCT = 'ADD_PRODUCT',
|
|
7
|
+
REMOVE_PRODUCT = 'REMOVE_PRODUCT',
|
|
8
|
+
REMOVE_PRODUCT_TO_CART = 'REMOVE_PRODUCT_TO_CART',
|
|
9
|
+
ON_CHANGE = 'ON_CHANGE',
|
|
10
|
+
UPDATE_SUCCESS_QUANTITY_EDITING_PRODUCT = 'UPDATE_SUCCESS_QUANTITY_EDITING_PRODUCT',
|
|
11
|
+
CANCEL_UPDATE_QUANTITY_EDITING_PRODUCT = 'CANCEL_UPDATE_QUANTITY_EDITING_PRODUCT',
|
|
12
|
+
REMOVE_ALL_PRODUCTS = 'REMOVE_ALL_PRODUCTS',
|
|
13
|
+
TOGGLE_FREE_PRODUCT = 'TOGGLE_FREE_PRODUCT',
|
|
14
|
+
TOGGLE_EDITING_PRODUCT = 'TOGGLE_EDITING_PRODUCT',
|
|
15
|
+
INCREMENT = 'INCREMENT',
|
|
16
|
+
DECREMENT = 'DECREMENT',
|
|
17
|
+
PUT_COMMENT = 'PUT_COMMENT',
|
|
18
|
+
PUT_EXTRA_PRODUCTS_AND_OPTIONAL_PRODUCT = 'PUT_EXTRA_PRODUCTS_AND_OPTIONAL_PRODUCT',
|
|
19
|
+
PRICE_RANGE = 'PRICE_RANGE',
|
|
20
|
+
SORT = 'SORT',
|
|
21
|
+
PAYMENT_METHOD = 'PAYMENT_METHOD',
|
|
22
|
+
APPLY_DISCOUNT = 'APPLY_DISCOUNT'
|
|
23
|
+
}
|
|
24
|
+
export const initialStateSales: SalesState = {
|
|
25
|
+
animateType: '',
|
|
26
|
+
counter: 0,
|
|
27
|
+
discountAmount: 0,
|
|
28
|
+
discountPercent: 0,
|
|
29
|
+
discountType: TypeDiscount.PERCENT,
|
|
30
|
+
itemsInCart: 0,
|
|
31
|
+
payId: '',
|
|
32
|
+
priceRange: 0,
|
|
33
|
+
PRODUCT: [],
|
|
34
|
+
sortBy: null,
|
|
35
|
+
startAnimateUp: '',
|
|
36
|
+
totalAmount: 0,
|
|
37
|
+
totalPrice: 0
|
|
38
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* extrasUtils.ts
|
|
3
|
+
* Increment/decrement extras handling as pure functions returning new arrays.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Increment extra entry
|
|
8
|
+
* @param {Array} dataExtra
|
|
9
|
+
* @param {string|number} exPid
|
|
10
|
+
* @returns {Array}
|
|
11
|
+
*/
|
|
12
|
+
export const incrementExtra = (dataExtra = [], exPid: string | number) => {
|
|
13
|
+
if (!Array.isArray(dataExtra)) return []
|
|
14
|
+
return dataExtra.map((producto: any) => {
|
|
15
|
+
if (producto.exPid === exPid) {
|
|
16
|
+
const initialQuantity = producto.quantity ? producto.quantity : 0
|
|
17
|
+
const newQuantity = initialQuantity + 1
|
|
18
|
+
const newExtraPrice = (producto.extraPrice || 0) * newQuantity
|
|
19
|
+
return { ...producto, quantity: newQuantity, newExtraPrice }
|
|
20
|
+
}
|
|
21
|
+
return producto
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Decrement extra entry
|
|
27
|
+
* @param {Array} dataExtra
|
|
28
|
+
* @param {string|number} exPid
|
|
29
|
+
* @returns {Array}
|
|
30
|
+
*/
|
|
31
|
+
export const decrementExtra = (dataExtra = [], exPid: string | number) => {
|
|
32
|
+
if (!Array.isArray(dataExtra)) return []
|
|
33
|
+
return dataExtra.map((producto: any) => {
|
|
34
|
+
if (producto.exPid === exPid) {
|
|
35
|
+
const { quantity = 0, extraPrice = 0 } = producto
|
|
36
|
+
const newQuantity = Math.max(quantity - 1, 0)
|
|
37
|
+
const newExtraPrice = newQuantity === 0 ? extraPrice : extraPrice * newQuantity
|
|
38
|
+
return { ...producto, quantity: newQuantity, newExtraPrice }
|
|
39
|
+
}
|
|
40
|
+
return producto
|
|
41
|
+
})
|
|
42
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter products by carProId.
|
|
3
|
+
* @param {Array} products - Array of products to filter.
|
|
4
|
+
* @param {Array} carProIds - Array of carProId to filter by.
|
|
5
|
+
* @returns {Array} - Filtered array of products or all products if no matches found.
|
|
6
|
+
*/
|
|
7
|
+
export function filterProductsByCarProId(products: any[], carProIds: (string | number)[]) {
|
|
8
|
+
if (!Array.isArray(products)) {
|
|
9
|
+
return []
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (!Array.isArray(carProIds) || carProIds.length === 0) {
|
|
13
|
+
return products
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return products.filter(product => {return carProIds.includes(product.carProId)})
|
|
17
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Increments product quantity in cart safely.
|
|
3
|
+
* - Validates stock
|
|
4
|
+
* - Respects free mode
|
|
5
|
+
* - Avoids unnecessary mutations
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} params
|
|
8
|
+
* @param {Object} params.state - Current reducer state
|
|
9
|
+
* @param {string | number} params.productId - Product identifier
|
|
10
|
+
* @param {Object[]} params.productsFood - Source products list
|
|
11
|
+
* @param {Function} params.sendNotification - Notification handler
|
|
12
|
+
*
|
|
13
|
+
* @returns {Object} Updated state
|
|
14
|
+
*/
|
|
15
|
+
export const incrementProductQuantity = ({
|
|
16
|
+
state,
|
|
17
|
+
productId,
|
|
18
|
+
productsFood = [],
|
|
19
|
+
sendNotification = () => {}
|
|
20
|
+
}: {
|
|
21
|
+
state: any;
|
|
22
|
+
productId: string | number;
|
|
23
|
+
productsFood: any[];
|
|
24
|
+
sendNotification?: Function;
|
|
25
|
+
}) => {
|
|
26
|
+
const sourceProduct = productsFood.find(
|
|
27
|
+
(product) => {return product.pId === productId}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
if (!sourceProduct) return state
|
|
31
|
+
|
|
32
|
+
const PRODUCT = state.PRODUCT.map((item: any) => {
|
|
33
|
+
if (item.pId !== productId) return item
|
|
34
|
+
|
|
35
|
+
const {
|
|
36
|
+
stock = 0,
|
|
37
|
+
manageStock,
|
|
38
|
+
ProPrice: unitPrice = 0
|
|
39
|
+
} = sourceProduct
|
|
40
|
+
|
|
41
|
+
const isFree = Boolean(item.free)
|
|
42
|
+
const newQuantity = item.ProQuantity + 1
|
|
43
|
+
|
|
44
|
+
// Stock = 0
|
|
45
|
+
if (stock === 0) {
|
|
46
|
+
sendNotification({
|
|
47
|
+
title: 'Sin stock',
|
|
48
|
+
backgroundColor: 'warning',
|
|
49
|
+
description: `El producto ${item.pName} está agotado y no puede ser añadido al carrito.`
|
|
50
|
+
})
|
|
51
|
+
return item
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Stock exceeded
|
|
55
|
+
if (manageStock && newQuantity > stock) {
|
|
56
|
+
sendNotification({
|
|
57
|
+
title: 'Stock insuficiente',
|
|
58
|
+
backgroundColor: 'warning',
|
|
59
|
+
description: `No puedes agregar más unidades de ${item.pName}, stock disponible: ${stock}`
|
|
60
|
+
})
|
|
61
|
+
return item
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
...item,
|
|
66
|
+
ProQuantity: newQuantity,
|
|
67
|
+
ProPrice: isFree ? 0 : newQuantity * unitPrice
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
...state,
|
|
73
|
+
counter: state.counter + 1,
|
|
74
|
+
PRODUCT
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Cookies } from '../../../cookies'
|
|
2
|
+
import { SalesState } from '../types'
|
|
3
|
+
|
|
4
|
+
import { initialStateSales } from './constants'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Initializes sales state from cookies or fallback state
|
|
8
|
+
* @param initialValue
|
|
9
|
+
*/
|
|
10
|
+
export const initializer = (
|
|
11
|
+
initialValue: SalesState = initialStateSales
|
|
12
|
+
): SalesState => {
|
|
13
|
+
try {
|
|
14
|
+
const raw = Cookies.get(process.env.NEXT_LOCAL_SALES_STORE)
|
|
15
|
+
|
|
16
|
+
if (!raw) return initialValue
|
|
17
|
+
|
|
18
|
+
return JSON.parse(raw) as SalesState
|
|
19
|
+
} catch {
|
|
20
|
+
return initialValue
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { handleRemoveProduct } from './remove-product.utils'
|
|
2
|
+
|
|
3
|
+
describe('handleRemoveProduct', () => {
|
|
4
|
+
test('decrements product quantity and updates price when ProQuantity > 1', () => {
|
|
5
|
+
const state = {
|
|
6
|
+
counter: 5,
|
|
7
|
+
totalAmount: 100,
|
|
8
|
+
PRODUCT: [
|
|
9
|
+
{ pId: 'p1', ProQuantity: 3, ProPrice: 30 },
|
|
10
|
+
{ pId: 'p2', ProQuantity: 1, ProPrice: 20 }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
const productsFood = [{ pId: 'p1', ProPrice: 10 }]
|
|
14
|
+
const action = { payload: { pId: 'p1', ProQuantity: 3, ProPrice: 10 } }
|
|
15
|
+
|
|
16
|
+
const result = handleRemoveProduct(state as any, action as any, productsFood as any)
|
|
17
|
+
|
|
18
|
+
expect(result.counter).toBe(4)
|
|
19
|
+
expect(result.totalAmount).toBe(90)
|
|
20
|
+
expect(result.PRODUCT).toHaveLength(2)
|
|
21
|
+
|
|
22
|
+
const updated = result.PRODUCT.find((p: any) => {return p.pId === 'p1'})
|
|
23
|
+
expect(updated).toEqual({ pId: 'p1', ProQuantity: 2, ProPrice: 20 })
|
|
24
|
+
|
|
25
|
+
const unchanged = result.PRODUCT.find((p: any) => {return p.pId === 'p2'})
|
|
26
|
+
expect(unchanged).toEqual({ pId: 'p2', ProQuantity: 1, ProPrice: 20 })
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
test('removes product from PRODUCT when ProQuantity === 1', () => {
|
|
30
|
+
const state = {
|
|
31
|
+
counter: 2,
|
|
32
|
+
totalAmount: 30,
|
|
33
|
+
PRODUCT: [
|
|
34
|
+
{ pId: 'p1', ProQuantity: 1, ProPrice: 15 },
|
|
35
|
+
{ pId: 'p2', ProQuantity: 1, ProPrice: 15 }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
const productsFood = [{ pId: 'p1', ProPrice: 15 }]
|
|
39
|
+
const action = { payload: { pId: 'p1', ProQuantity: 1, ProPrice: 15 } }
|
|
40
|
+
|
|
41
|
+
const result = handleRemoveProduct(state as any, action as any, productsFood as any)
|
|
42
|
+
|
|
43
|
+
expect(result.counter).toBe(1)
|
|
44
|
+
expect(result.totalAmount).toBe(15)
|
|
45
|
+
expect(result.PRODUCT).toHaveLength(1)
|
|
46
|
+
expect(result.PRODUCT.find((p: any) => {return p.pId === 'p1'})).toBeUndefined()
|
|
47
|
+
expect(result.PRODUCT[0]).toEqual({ pId: 'p2', ProQuantity: 1, ProPrice: 15 })
|
|
48
|
+
})
|
|
49
|
+
})
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param state
|
|
4
|
+
* @param action
|
|
5
|
+
* @param productsFood
|
|
6
|
+
*/
|
|
7
|
+
export function handleRemoveProduct(state: any, action: any, productsFood: any) {
|
|
8
|
+
const productExist = state?.PRODUCT.find((items: any) => {
|
|
9
|
+
return items.pId === action.payload.pId
|
|
10
|
+
})
|
|
11
|
+
const OurProduct = productsFood.find((items: any) => {
|
|
12
|
+
return items.pId === action.payload.pId
|
|
13
|
+
})
|
|
14
|
+
return {
|
|
15
|
+
...state,
|
|
16
|
+
counter: state.counter - 1,
|
|
17
|
+
totalAmount: state.totalAmount - action.payload.ProPrice,
|
|
18
|
+
PRODUCT:
|
|
19
|
+
action.payload.ProQuantity > 1
|
|
20
|
+
? state.PRODUCT.map((items: any) => {
|
|
21
|
+
return items.pId === action.payload.pId
|
|
22
|
+
? {
|
|
23
|
+
...items,
|
|
24
|
+
pId: action.payload.pId,
|
|
25
|
+
ProQuantity: items.ProQuantity - 1,
|
|
26
|
+
ProPrice: productExist.ProPrice - OurProduct?.ProPrice
|
|
27
|
+
}
|
|
28
|
+
: items
|
|
29
|
+
})
|
|
30
|
+
: state.PRODUCT.filter((items: any) => {
|
|
31
|
+
return items.pId !== action.payload.pId
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveProduct - resolve product from local memory or fetch from API
|
|
3
|
+
* @param {{ pId: string, productsFood?: any[], fetchProduct: (params:{pId:string}) => Promise<any> }} args
|
|
4
|
+
* @returns {Promise<any|null>} resolved product or null if not found
|
|
5
|
+
*/
|
|
6
|
+
export const resolveProduct = async ({
|
|
7
|
+
pId,
|
|
8
|
+
productsFood = [],
|
|
9
|
+
fetchProduct
|
|
10
|
+
}: {
|
|
11
|
+
pId: string
|
|
12
|
+
productsFood?: any[]
|
|
13
|
+
fetchProduct: (params: { pId: string }) => Promise<any>
|
|
14
|
+
}): Promise<any | null> => {
|
|
15
|
+
if (!pId) return null
|
|
16
|
+
|
|
17
|
+
// fast memory lookup
|
|
18
|
+
const mem = productsFood.find((it: any) => {return it?.pId === pId})
|
|
19
|
+
if (mem) return mem
|
|
20
|
+
|
|
21
|
+
// fetch from API and normalize
|
|
22
|
+
try {
|
|
23
|
+
const res = await fetchProduct({ pId })
|
|
24
|
+
return res?.data?.productFoodsOne ?? null
|
|
25
|
+
} catch (err) {
|
|
26
|
+
// bubble up null — caller will notify
|
|
27
|
+
return null
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useCallback } from 'react'
|
|
2
|
+
|
|
3
|
+
import { resolveProduct } from './resolveProduct'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* useAddToCart - returns a stable handler that resolves product and dispatches ADD_TO_CART
|
|
7
|
+
* @param {Object} params
|
|
8
|
+
* @param {(params:{pId:string})=>Promise<any>} params.handleGetOneProduct - api fetch function (hook)
|
|
9
|
+
* @param {any[]} params.productsFood - in-memory products list
|
|
10
|
+
* @param {(action:any)=>void} params.dispatch - reducer dispatch
|
|
11
|
+
* @param {(n:{title:string,backgroundColor:string,description:string})=>void} params.sendNotification
|
|
12
|
+
*/
|
|
13
|
+
export const useAddToCart = ({
|
|
14
|
+
handleGetOneProduct,
|
|
15
|
+
productsFood,
|
|
16
|
+
dispatch,
|
|
17
|
+
sendNotification
|
|
18
|
+
}: {
|
|
19
|
+
handleGetOneProduct: (p: { pId: string }) => Promise<any>
|
|
20
|
+
productsFood: any[]
|
|
21
|
+
dispatch: (a: any) => void
|
|
22
|
+
sendNotification: (n: { title: string; backgroundColor: string; description: string }) => void
|
|
23
|
+
}) => {
|
|
24
|
+
return useCallback(
|
|
25
|
+
async (action: any) => {
|
|
26
|
+
const pId = action?.payload?.pId
|
|
27
|
+
if (!pId) {
|
|
28
|
+
sendNotification?.({
|
|
29
|
+
title: 'Invalid product',
|
|
30
|
+
backgroundColor: 'warning',
|
|
31
|
+
description: 'Product identifier is missing'
|
|
32
|
+
})
|
|
33
|
+
return
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// UX: show immediate feedback if you want (spinner, skeleton, etc.) — omitted for brevity
|
|
37
|
+
|
|
38
|
+
const product = await resolveProduct({
|
|
39
|
+
pId,
|
|
40
|
+
productsFood,
|
|
41
|
+
fetchProduct: handleGetOneProduct
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
if (!product) {
|
|
45
|
+
sendNotification?.({
|
|
46
|
+
title: 'Producto no encontrado',
|
|
47
|
+
backgroundColor: 'warning',
|
|
48
|
+
description: 'No se pudo obtener la información del producto'
|
|
49
|
+
})
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// dispatch synchronous action with resolved product (reducer stays pure)
|
|
54
|
+
dispatch({
|
|
55
|
+
type: 'ADD_TO_CART',
|
|
56
|
+
payload: {
|
|
57
|
+
...action.payload,
|
|
58
|
+
__resolvedProduct: product
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
},
|
|
62
|
+
[handleGetOneProduct, productsFood, dispatch, sendNotification]
|
|
63
|
+
)
|
|
64
|
+
}
|