npm-pkg-hook 1.3.8 → 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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param o
|
|
4
|
+
*/
|
|
5
|
+
function formatError (o) {
|
|
6
|
+
if (hasErrorProperty(o)) {
|
|
7
|
+
o.error = formatError(o.error)
|
|
8
|
+
o.message = o.message ?? o.error.message
|
|
9
|
+
}
|
|
10
|
+
return o
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param x
|
|
16
|
+
*/
|
|
17
|
+
function hasErrorProperty (x) {
|
|
18
|
+
return Boolean(x?.error)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const _logger = {
|
|
22
|
+
error (code, metadata) {
|
|
23
|
+
metadata = formatError(metadata)
|
|
24
|
+
console.error(
|
|
25
|
+
`[next-auth][error][${code}]`,
|
|
26
|
+
`\nhttps://next-auth.js.org/errors#${code.toLowerCase()}`,
|
|
27
|
+
metadata.message,
|
|
28
|
+
metadata
|
|
29
|
+
)
|
|
30
|
+
},
|
|
31
|
+
warn (code) {
|
|
32
|
+
console.warn(
|
|
33
|
+
`[next-auth][warn][${code}]`,
|
|
34
|
+
`\nhttps://next-auth.js.org/warnings#${code.toLowerCase()}`
|
|
35
|
+
)
|
|
36
|
+
},
|
|
37
|
+
debug (code, metadata) {
|
|
38
|
+
console.log(`[next-auth][debug][${code}]`, metadata)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param newLogger
|
|
45
|
+
* @param debug
|
|
46
|
+
*/
|
|
47
|
+
export function setLogger (newLogger = {}, debug) {
|
|
48
|
+
if (!debug) _logger.debug = () => { }
|
|
49
|
+
|
|
50
|
+
if (newLogger.error) _logger.error = newLogger.error
|
|
51
|
+
if (newLogger.warn) _logger.warn = newLogger.warn
|
|
52
|
+
if (newLogger.debug) _logger.debug = newLogger.debug
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @param logger
|
|
58
|
+
* @param basePath
|
|
59
|
+
*/
|
|
60
|
+
export function proxyLogger (logger = _logger, basePath) {
|
|
61
|
+
try {
|
|
62
|
+
if (typeof window === 'undefined') {
|
|
63
|
+
return logger
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const clientLogger = {}
|
|
67
|
+
for (const level in logger) {
|
|
68
|
+
clientLogger[level] = (code, metadata) => {
|
|
69
|
+
_logger[level](code, metadata)
|
|
70
|
+
|
|
71
|
+
if (level === 'error') {
|
|
72
|
+
metadata = formatError(metadata)
|
|
73
|
+
}
|
|
74
|
+
metadata.client = true
|
|
75
|
+
const url = `${basePath}/_log`
|
|
76
|
+
const body = new URLSearchParams({ level, code, ...metadata })
|
|
77
|
+
if (navigator.sendBeacon) {
|
|
78
|
+
return navigator.sendBeacon(url, body)
|
|
79
|
+
}
|
|
80
|
+
return fetch(url, { method: 'POST', body, keepalive: true })
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return clientLogger
|
|
84
|
+
} catch {
|
|
85
|
+
return _logger
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export { _logger as default }
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Interface for the internal URL structure */
|
|
2
|
+
const InternalUrl = {
|
|
3
|
+
origin: 'http://localhost:3000',
|
|
4
|
+
host: 'localhost:3000',
|
|
5
|
+
path: '/api/auth',
|
|
6
|
+
base: 'http://localhost:3000/api/auth',
|
|
7
|
+
toString: function () {
|
|
8
|
+
return this.base
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Function to parse a URL-like object for server-side requests/redirects
|
|
14
|
+
* @param url
|
|
15
|
+
*/
|
|
16
|
+
function parseUrl (url: string | undefined) {
|
|
17
|
+
const defaultUrl = new URL('http://localhost:3000/api/auth')
|
|
18
|
+
|
|
19
|
+
if (url && !url.startsWith('http')) {
|
|
20
|
+
url = `https://${url}`
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const _url = new URL(url || defaultUrl)
|
|
24
|
+
const path = (_url.pathname === '/' ? defaultUrl.pathname : _url.pathname).replace(/\/$/, '')
|
|
25
|
+
|
|
26
|
+
const base = `${_url.origin}${path}`
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
origin: _url.origin,
|
|
30
|
+
host: _url.host,
|
|
31
|
+
path,
|
|
32
|
+
base,
|
|
33
|
+
toString: function () {
|
|
34
|
+
return base
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { InternalUrl, parseUrl }
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { useApolloClient } from '@apollo/client'
|
|
2
|
+
import { useState } from 'react'
|
|
3
|
+
|
|
4
|
+
import { Cookies } from '../../cookies/index'
|
|
5
|
+
import { getCurrentDomain } from '../../utils'
|
|
6
|
+
import { signOutAuth } from './helpers'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
interface UseLogoutOptions {
|
|
10
|
+
setAlertBox?: (options: { message: string }) => { message: string }
|
|
11
|
+
}
|
|
12
|
+
export const useLogout = ({
|
|
13
|
+
setAlertBox = ({
|
|
14
|
+
message
|
|
15
|
+
}) => { return { message } }
|
|
16
|
+
}: UseLogoutOptions = {}) => {
|
|
17
|
+
const [loading, setLoading] = useState<boolean>(false)
|
|
18
|
+
const [error, setError] = useState(false)
|
|
19
|
+
const client = useApolloClient()
|
|
20
|
+
|
|
21
|
+
const eliminarCookie = async (nombreCookie: string) => {
|
|
22
|
+
try {
|
|
23
|
+
let domain = getCurrentDomain() as string | undefined
|
|
24
|
+
|
|
25
|
+
// Si estás en entorno local, usa 'localhost' como dominio
|
|
26
|
+
if (domain === 'localhost') {
|
|
27
|
+
domain = undefined // Esto permitirá la cookie en 'localhost'
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const expirationTime = new Date()
|
|
31
|
+
expirationTime.setTime(expirationTime.getTime() - 1000) // Establece una fecha de expiración en el pasado
|
|
32
|
+
|
|
33
|
+
const formattedDomain: string | undefined = typeof domain === 'string' ? domain : undefined
|
|
34
|
+
|
|
35
|
+
Cookies.remove(nombreCookie, { domain: formattedDomain, path: '/', secure: process.env.NODE_ENV === 'production' })
|
|
36
|
+
|
|
37
|
+
console.log('Cookie eliminada correctamente.')
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error('Error al eliminar la cookie:', error)
|
|
40
|
+
throw new Error('Error al eliminar la cookie. ')
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const deleteCookie = async () => {
|
|
44
|
+
await eliminarCookie(String(process.env.NEXT_PUBLIC_SESSION_NAME))
|
|
45
|
+
await eliminarCookie(String(process.env.NEXT_LOCAL_SALES_STORE))
|
|
46
|
+
await eliminarCookie('restaurant')
|
|
47
|
+
await eliminarCookie('usuario')
|
|
48
|
+
await eliminarCookie('session')
|
|
49
|
+
}
|
|
50
|
+
const onClickLogout = async (params?: { redirect?: boolean }) => {
|
|
51
|
+
const redirect = params?.redirect ?? true
|
|
52
|
+
try {
|
|
53
|
+
if (redirect) {
|
|
54
|
+
setLoading(true)
|
|
55
|
+
} else {
|
|
56
|
+
return await deleteCookie()
|
|
57
|
+
}
|
|
58
|
+
await deleteCookie()
|
|
59
|
+
// Logout from the server
|
|
60
|
+
const port = globalThis.location.port ? `:${globalThis.location.port}` : ''
|
|
61
|
+
const baseUrl = `${globalThis.location.protocol}//${globalThis.location.hostname}${port}`
|
|
62
|
+
const logoutResponse = await fetch(`${baseUrl}/api/auth/signout/`, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: {
|
|
65
|
+
'Content-Type': 'application/json'
|
|
66
|
+
},
|
|
67
|
+
credentials: 'include'
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
if (!logoutResponse.ok) {
|
|
71
|
+
setLoading(false)
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
await logoutResponse.json()
|
|
76
|
+
console.log('Intentando borrar cookies...')
|
|
77
|
+
|
|
78
|
+
// Eliminar la cookie process.env.NEXT_PUBLIC_SESSION_NAME
|
|
79
|
+
await eliminarCookie(String(process.env.NEXT_PUBLIC_SESSION_NAME))
|
|
80
|
+
Cookies.remove(String(process.env.NEXT_LOCAL_SALES_STORE))
|
|
81
|
+
Cookies.remove('restaurant')
|
|
82
|
+
Cookies.remove('usuario')
|
|
83
|
+
Cookies.remove('session')
|
|
84
|
+
|
|
85
|
+
// Clear Apollo Client cache
|
|
86
|
+
client?.clearStore()
|
|
87
|
+
|
|
88
|
+
setLoading(false)
|
|
89
|
+
console.log('Cookies eliminadas y sesión cerrada con éxito')
|
|
90
|
+
signOutAuth({ redirect: true, callbackUrl: '/' })
|
|
91
|
+
.catch((err) => {
|
|
92
|
+
setError(true)
|
|
93
|
+
console.error('Error in signOutAuth:', err)
|
|
94
|
+
setAlertBox({ message: 'Ocurrió un error al cerrar sesión' })
|
|
95
|
+
})
|
|
96
|
+
} catch (err) {
|
|
97
|
+
setLoading(false)
|
|
98
|
+
setError(true)
|
|
99
|
+
console.error('Error al cerrar sesión:', err)
|
|
100
|
+
setAlertBox({ message: 'Ocurrió un error al cerrar sesión' })
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return [onClickLogout, { loading, error }]
|
|
105
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Busca un objeto dentro de un conjunto de columnas por su código de referencia.
|
|
3
|
+
* @param {Object} data - El objeto que contiene las columnas.
|
|
4
|
+
* @param {string} pCodeRef - El código de referencia a buscar.
|
|
5
|
+
* @returns {Object|null} - El objeto encontrado o null si no se encuentra.
|
|
6
|
+
*/
|
|
7
|
+
export function findOrderByCodeRef (data, pCodeRef) {
|
|
8
|
+
if (!data || typeof data !== 'object') {
|
|
9
|
+
throw new Error('El parámetro "data" debe ser un objeto no nulo.')
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (typeof pCodeRef !== 'string') {
|
|
13
|
+
throw new Error('El parámetro "pCodeRef" debe ser una cadena de texto.')
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Iterar sobre cada columna en el objeto data
|
|
17
|
+
for (const columnKey in data) {
|
|
18
|
+
if (Object.hasOwnProperty.call(data, columnKey)) {
|
|
19
|
+
const column = data[columnKey]
|
|
20
|
+
// Verificar si la columna es un array
|
|
21
|
+
if (Array.isArray(column)) {
|
|
22
|
+
// Buscar el objeto por pCodeRef dentro de la columna actual
|
|
23
|
+
const foundOrder = column.find(
|
|
24
|
+
(order) => {return order && order.pCodeRef === pCodeRef}
|
|
25
|
+
)
|
|
26
|
+
// Si se encuentra el objeto, devolverlo
|
|
27
|
+
if (foundOrder) {
|
|
28
|
+
return foundOrder
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Si no se encuentra el objeto en ninguna columna, devolver null
|
|
34
|
+
return null
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const isDateInRange = (dateString) => {
|
|
38
|
+
const currentDate = new Date()
|
|
39
|
+
const todayStart = new Date(currentDate.setHours(0, 0, 0, 0))
|
|
40
|
+
const tomorrowStart = new Date(todayStart)
|
|
41
|
+
tomorrowStart.setDate(tomorrowStart.getDate() + 1)
|
|
42
|
+
|
|
43
|
+
const date = new Date(dateString)
|
|
44
|
+
return date >= todayStart && date < tomorrowStart
|
|
45
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
useGetSale,
|
|
5
|
+
// updateExistingOrders,
|
|
6
|
+
convertDateFormat,
|
|
7
|
+
useOrdersFromStore
|
|
8
|
+
} from '..'
|
|
9
|
+
|
|
10
|
+
import { findOrderByCodeRef, isDateInRange } from './helpers'
|
|
11
|
+
|
|
12
|
+
export const useManageNewOrder = ({
|
|
13
|
+
client,
|
|
14
|
+
idStore,
|
|
15
|
+
setAlertBox = ({ message, duration }) => {
|
|
16
|
+
return { message, duration }
|
|
17
|
+
},
|
|
18
|
+
playNotificationSound = () => {},
|
|
19
|
+
setIsOpenOrder = (boolean) => { return boolean },
|
|
20
|
+
setCountOrders = (number) => { return number },
|
|
21
|
+
sendNotification = ({ title, description, backgroundColor }) => {
|
|
22
|
+
return {
|
|
23
|
+
title,
|
|
24
|
+
description,
|
|
25
|
+
backgroundColor
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}) => {
|
|
29
|
+
const KEY_STATUS_ORDER = 'ACEPTA'
|
|
30
|
+
const [orders, setOrders] = useState([])
|
|
31
|
+
|
|
32
|
+
const [data] = useOrdersFromStore({
|
|
33
|
+
idStore,
|
|
34
|
+
search: '',
|
|
35
|
+
fromDate: convertDateFormat({ start: true }),
|
|
36
|
+
toDate: convertDateFormat({ start: false })
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (data) {
|
|
41
|
+
const dataOrder = data[KEY_STATUS_ORDER]
|
|
42
|
+
if (Array.isArray(dataOrder) && dataOrder) {
|
|
43
|
+
const filteredOrders = dataOrder.filter(order =>
|
|
44
|
+
{return isDateInRange(order?.pDatCre) && order?.pSState === 1}
|
|
45
|
+
) ?? []
|
|
46
|
+
setOrders(filteredOrders)
|
|
47
|
+
setCountOrders(filteredOrders.length)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, [data])
|
|
51
|
+
|
|
52
|
+
const { getOneSalesStore } = useGetSale()
|
|
53
|
+
|
|
54
|
+
const handleNewOrder = (order) => {
|
|
55
|
+
const dataOrder = data[KEY_STATUS_ORDER]
|
|
56
|
+
setOrders(dataOrder)
|
|
57
|
+
const { pCodeRef } = order || {}
|
|
58
|
+
if (pCodeRef) {
|
|
59
|
+
const isCodeRefExists = findOrderByCodeRef(data, pCodeRef)
|
|
60
|
+
if (isCodeRefExists) {
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
setIsOpenOrder(true)
|
|
64
|
+
getOneSalesStore({
|
|
65
|
+
variables: {
|
|
66
|
+
pCodeRef: pCodeRef ?? ''
|
|
67
|
+
}
|
|
68
|
+
}).then((response) => {
|
|
69
|
+
console.log(response)
|
|
70
|
+
// const currentSale = response?.data?.getOneSalesStore || {}
|
|
71
|
+
client.cache.modify({
|
|
72
|
+
fields: {
|
|
73
|
+
// getAllOrdersFromStore (existingOrders = []) {
|
|
74
|
+
// try {
|
|
75
|
+
// const cache = updateExistingOrders(
|
|
76
|
+
// existingOrders,
|
|
77
|
+
// pCodeRef,
|
|
78
|
+
// 1,
|
|
79
|
+
// currentSale
|
|
80
|
+
// )
|
|
81
|
+
// const currentOrder = cache[KEY_STATUS_ORDER]
|
|
82
|
+
// const filteredOrders = currentOrder.filter(order =>
|
|
83
|
+
// isDateInRange(order.pDatCre)
|
|
84
|
+
// )
|
|
85
|
+
// setOrders(filteredOrders)
|
|
86
|
+
// playNotificationSound()
|
|
87
|
+
// return cache
|
|
88
|
+
// } catch (e) {
|
|
89
|
+
// return existingOrders
|
|
90
|
+
// }
|
|
91
|
+
// }
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
})
|
|
95
|
+
sendNotification({
|
|
96
|
+
title: 'Pedido',
|
|
97
|
+
description: 'Nuevo pedido',
|
|
98
|
+
backgroundColor: 'success'
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return [orders, { handleNewOrder }]
|
|
104
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useRouter, useSearchParams, useParams } from 'next/navigation'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Generic query params map
|
|
7
|
+
*/
|
|
8
|
+
export type QueryParams = Record<string, string>
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Custom location interface (useful for testing or external routers)
|
|
12
|
+
*/
|
|
13
|
+
export interface CustomLocation {
|
|
14
|
+
query?: QueryParams
|
|
15
|
+
push?: (url: string) => void
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Hook options
|
|
20
|
+
*/
|
|
21
|
+
export interface UseManageQueryParamsOptions {
|
|
22
|
+
location?: CustomLocation
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Params getter options
|
|
27
|
+
*/
|
|
28
|
+
export interface GetParamsOptions {
|
|
29
|
+
param: string
|
|
30
|
+
callback?: (value: string) => void
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Hook return type
|
|
35
|
+
*/
|
|
36
|
+
export interface UseManageQueryParamsResult {
|
|
37
|
+
getQuery: (name: string) => string
|
|
38
|
+
handleQuery: (name: string, value?: string) => void
|
|
39
|
+
handleCleanQuery: (name: string) => void
|
|
40
|
+
getParams: (options: GetParamsOptions) => string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Hook to manage query parameters in Next.js 13+ (App Router)
|
|
45
|
+
* Supports dependency injection for router/query (testing-friendly).
|
|
46
|
+
*
|
|
47
|
+
* @param {UseManageQueryParamsOptions} options
|
|
48
|
+
* @returns {UseManageQueryParamsResult}
|
|
49
|
+
*/
|
|
50
|
+
export const useManageQueryParams = (
|
|
51
|
+
{ location }: UseManageQueryParamsOptions = {}
|
|
52
|
+
): UseManageQueryParamsResult => {
|
|
53
|
+
const router = useRouter()
|
|
54
|
+
const searchParams = useSearchParams()
|
|
55
|
+
const params = useParams()
|
|
56
|
+
|
|
57
|
+
const activeQuery: QueryParams =
|
|
58
|
+
location?.query ??
|
|
59
|
+
Object.fromEntries(searchParams.entries())
|
|
60
|
+
|
|
61
|
+
const pushFn = location?.push ?? ((url: string) => {return router.push(url)})
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Set or update a query param
|
|
65
|
+
* @param name
|
|
66
|
+
* @param value
|
|
67
|
+
*/
|
|
68
|
+
const handleQuery = (name: string, value = ''): void => {
|
|
69
|
+
if (!name) return
|
|
70
|
+
|
|
71
|
+
const query = new URLSearchParams(activeQuery)
|
|
72
|
+
query.set(name, value)
|
|
73
|
+
|
|
74
|
+
pushFn(`?${query.toString()}`)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Remove a query param
|
|
79
|
+
* @param name
|
|
80
|
+
*/
|
|
81
|
+
const handleCleanQuery = (name: string): void => {
|
|
82
|
+
if (!name) return
|
|
83
|
+
|
|
84
|
+
const query = new URLSearchParams(activeQuery)
|
|
85
|
+
query.delete(name)
|
|
86
|
+
|
|
87
|
+
pushFn(`?${query.toString()}`)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Get a query param value
|
|
92
|
+
* @param name
|
|
93
|
+
*/
|
|
94
|
+
const getQuery = (name: string): string => {
|
|
95
|
+
if (!name) return ''
|
|
96
|
+
return activeQuery?.[name] ?? ''
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get a dynamic route param from Next.js
|
|
101
|
+
* @param root0
|
|
102
|
+
* @param root0.param
|
|
103
|
+
* @param root0.callback
|
|
104
|
+
*/
|
|
105
|
+
const getParams = ({ param, callback }: GetParamsOptions): string => {
|
|
106
|
+
if (!param) return ''
|
|
107
|
+
|
|
108
|
+
const value = String(params?.[param] ?? '')
|
|
109
|
+
callback?.(value)
|
|
110
|
+
|
|
111
|
+
return value
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
getQuery,
|
|
116
|
+
handleQuery,
|
|
117
|
+
handleCleanQuery,
|
|
118
|
+
getParams
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
export const MEDIA_QUERY = {
|
|
4
|
+
MOBILE: '(max-width: 768px)',
|
|
5
|
+
TABLET: '(max-width: 960px)',
|
|
6
|
+
DESKTOP: '(min-width: 961px)'
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const useMobile = ({ callback } = {}) => {
|
|
10
|
+
const [isMobile, setIsMobile] = useState(false)
|
|
11
|
+
const [isTablet, setIsTablet] = useState(false)
|
|
12
|
+
const [isDesktop, setIsDesktop] = useState(false)
|
|
13
|
+
|
|
14
|
+
const prevValues = useRef({
|
|
15
|
+
isMobile: false,
|
|
16
|
+
isTablet: false,
|
|
17
|
+
isDesktop: false
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (typeof window === 'undefined') return
|
|
22
|
+
|
|
23
|
+
const mobileQuery = window.matchMedia(MEDIA_QUERY.MOBILE)
|
|
24
|
+
const tabletQuery = window.matchMedia(MEDIA_QUERY.TABLET)
|
|
25
|
+
const desktopQuery = window.matchMedia(MEDIA_QUERY.DESKTOP)
|
|
26
|
+
|
|
27
|
+
const updateMatches = () => {
|
|
28
|
+
const newIsMobile = mobileQuery.matches
|
|
29
|
+
const newIsTablet = tabletQuery.matches
|
|
30
|
+
const newIsDesktop = desktopQuery.matches
|
|
31
|
+
|
|
32
|
+
const hasChanged =
|
|
33
|
+
newIsMobile !== prevValues.current.isMobile ||
|
|
34
|
+
newIsTablet !== prevValues.current.isTablet ||
|
|
35
|
+
newIsDesktop !== prevValues.current.isDesktop
|
|
36
|
+
|
|
37
|
+
if (hasChanged) {
|
|
38
|
+
prevValues.current = {
|
|
39
|
+
isMobile: newIsMobile,
|
|
40
|
+
isTablet: newIsTablet,
|
|
41
|
+
isDesktop: newIsDesktop
|
|
42
|
+
}
|
|
43
|
+
callback?.(prevValues.current)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
setIsMobile(newIsMobile)
|
|
47
|
+
setIsTablet(newIsTablet)
|
|
48
|
+
setIsDesktop(newIsDesktop)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
updateMatches()
|
|
52
|
+
|
|
53
|
+
mobileQuery.addEventListener('change', updateMatches)
|
|
54
|
+
tabletQuery.addEventListener('change', updateMatches)
|
|
55
|
+
desktopQuery.addEventListener('change', updateMatches)
|
|
56
|
+
|
|
57
|
+
return () => {
|
|
58
|
+
mobileQuery.removeEventListener('change', updateMatches)
|
|
59
|
+
tabletQuery.removeEventListener('change', updateMatches)
|
|
60
|
+
desktopQuery.removeEventListener('change', updateMatches)
|
|
61
|
+
}
|
|
62
|
+
}, [callback])
|
|
63
|
+
|
|
64
|
+
return { isMobile, isTablet, isDesktop }
|
|
65
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validateModules'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates and filters modules based on the "read" permission.
|
|
3
|
+
* If a module's view does not have "read" permission in the permissions object, the module is removed.
|
|
4
|
+
*/
|
|
5
|
+
type PermissionMap = Record<string, string[]>
|
|
6
|
+
|
|
7
|
+
interface SubModule {
|
|
8
|
+
view: string
|
|
9
|
+
[key: string]: any
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface Module {
|
|
13
|
+
view: string
|
|
14
|
+
subModules?: SubModule[]
|
|
15
|
+
[key: string]: any
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const validateModules = (
|
|
19
|
+
modules: Module[] = [],
|
|
20
|
+
permissions: PermissionMap = {}
|
|
21
|
+
): Module[] => {
|
|
22
|
+
if (!Array.isArray(modules) || modules.length <= 0) return []
|
|
23
|
+
return modules
|
|
24
|
+
.map((module) => {
|
|
25
|
+
// Check if the main module's view has "read" permission
|
|
26
|
+
const hasReadPermission = permissions[module.view]?.includes('read')
|
|
27
|
+
|
|
28
|
+
// Validate and filter subModules if they exist
|
|
29
|
+
const validSubModules =
|
|
30
|
+
module.subModules?.filter((subModule: SubModule) =>
|
|
31
|
+
permissions[subModule.view]?.includes('read')
|
|
32
|
+
) || []
|
|
33
|
+
|
|
34
|
+
// If the module or its subModules don't have read permission, exclude it
|
|
35
|
+
if (!hasReadPermission && validSubModules.length === 0) {
|
|
36
|
+
return null
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Return the module with its valid subModules
|
|
40
|
+
return { ...module, subModules: validSubModules }
|
|
41
|
+
})
|
|
42
|
+
.filter(Boolean) as Module[] // Remove null values
|
|
43
|
+
}
|