npm-pkg-hook 1.13.1 → 1.13.2
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 +0 -0
- package/.github/pull_request_template.md +18 -0
- package/.github/workflows/pepeline.yaml +30 -0
- package/dist/index.js +1 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -6
- package/dist/index.mjs.map +1 -1
- package/eslint.config.mts +153 -0
- package/expire.json +1 -0
- package/jsconfig.json +28 -0
- package/package.json +1 -6
- package/script.txt +7 -0
- package/src/config/client/errors.ts +39 -0
- package/src/config/client/index.ts +1 -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/cookies/index.ts +3 -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/helpers/index.ts +7 -0
- package/src/hooks/getCategoriesWithProduct/index.ts +62 -0
- 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/statusOpenStores/helpers/index.ts +124 -0
- package/src/hooks/statusOpenStores/index.ts +221 -0
- package/src/hooks/updateExtProductFoodsOptional/index.ts +49 -0
- 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/useAnimationFrame/index.ts +45 -0
- package/src/hooks/useAnimationText/index.ts +31 -0
- package/src/hooks/useAsideCart/helpers/index.ts +22 -0
- package/src/hooks/useAsideCart/index.ts +217 -0
- package/src/hooks/useAsideCart/queries.ts +10 -0
- package/src/hooks/useBanner/index.ts +20 -0
- package/src/hooks/useCart/index.ts +2 -0
- package/src/hooks/useCart/queries.ts +174 -0
- package/src/hooks/useCart/useCart/helpers/index.ts +79 -0
- package/src/hooks/useCart/useCart/index.ts +424 -0
- package/src/hooks/useCart/useGetCart/index.ts +34 -0
- package/src/hooks/useCatWithProduct/index.ts +54 -0
- package/src/hooks/useCatWithProduct/queries.ts +200 -0
- package/src/hooks/useCatWithProduct/types/index.ts +104 -0
- package/src/hooks/useCatWithProductClient/index.ts +57 -0
- package/src/hooks/useCatWithProductClient/queries.ts +56 -0
- package/src/hooks/useCategoriesProduct/index.ts +14 -0
- package/src/hooks/useCategoriesProduct/queries.ts +16 -0
- package/src/hooks/useCategoryInStore/index.ts +167 -0
- package/src/hooks/useCategoryInStore/queries.ts +78 -0
- package/src/hooks/useCategoryStore/index.ts +8 -0
- package/src/hooks/useCategoryStore/queries.ts +16 -0
- package/src/hooks/useChartData/index.ts +171 -0
- package/src/hooks/useChartData/useChartData/index.ts +200 -0
- package/src/hooks/useChartData/useChartDataAllOrders/index.ts +94 -0
- package/src/hooks/useChatRoomSubscription/index.ts +28 -0
- package/src/hooks/useCheckbox/index.ts +115 -0
- package/src/hooks/useCities/index.ts +14 -0
- package/src/hooks/useCities/queries.ts +12 -0
- package/src/hooks/useClients/index.ts +97 -0
- 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.ts +52 -0
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/index.ts +182 -0
- 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.ts +32 -0
- package/src/hooks/useDeleteSubProductOptional/queries.ts +10 -0
- 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/helpers/index.ts +51 -0
- package/src/hooks/useDessert/index.ts +529 -0
- 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.ts +79 -0
- package/src/hooks/useDropzone/index.ts +94 -0
- package/src/hooks/useDynamicAuth/index.ts +14 -0
- package/src/hooks/useDynamicAuth/queries.ts +24 -0
- package/src/hooks/useEditCategory/index.ts +41 -0
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +28 -0
- package/src/hooks/useEditOneExtProductFoodOptional/queries.ts +16 -0
- package/src/hooks/useEditSubProductOptional/index.ts +12 -0
- package/src/hooks/useEditSubProductOptional/queries.ts +10 -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.ts +34 -0
- package/src/hooks/useFavoriteStores/index.ts +31 -0
- package/src/hooks/useFavoriteStores/queries.ts +54 -0
- package/src/hooks/useFetchJson/index.ts +25 -0
- package/src/hooks/useFetchMoreInteractions/index.jsx +39 -0
- package/src/hooks/useFilterConfigs/index.ts +173 -0
- package/src/hooks/useFingerprintjs/index.ts +197 -0
- package/src/hooks/useFormTools/index.ts +143 -0
- package/src/hooks/useFormatDate/index.ts +91 -0
- package/src/hooks/useFormatNumberPhone/index.ts +23 -0
- package/src/hooks/useFullScreenMode/index.ts +61 -0
- package/src/hooks/useGenerateNumberArray/index.ts +17 -0
- package/src/hooks/useGetAllLocationUser/index.ts +13 -0
- package/src/hooks/useGetAllLocationUser/queries.ts +44 -0
- package/src/hooks/useGetAllSales/index.ts +26 -0
- package/src/hooks/useGetCookies/index.ts +43 -0
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/index.ts +15 -0
- package/src/hooks/useGetFoodRecomended/index.ts +33 -0
- package/src/hooks/useGetFoodRecomended/queries.ts +47 -0
- package/src/hooks/useGetMessagesToRoom/index.ts +23 -0
- package/src/hooks/useGetMinPrice/index.ts +13 -0
- package/src/hooks/useGetMinPrice/queries.ts +7 -0
- package/src/hooks/useGetOneStoreRating/index.ts +41 -0
- package/src/hooks/useGetOneStoreRating/queries.ts +18 -0
- package/src/hooks/useGetSalesAmountToday/index.ts +31 -0
- package/src/hooks/useGetStoreCookie/index.ts +21 -0
- package/src/hooks/useGoogleLogin/index.ts +169 -0
- package/src/hooks/useGoogleLogin/loadScript.ts +15 -0
- package/src/hooks/useGoogleLogin/removeScript.ts +7 -0
- package/src/hooks/useHover/index.ts +32 -0
- package/src/hooks/useImageOptimization/index.ts +32 -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.ts +55 -0
- package/src/hooks/useImagesStore/index.ts +227 -0
- package/src/hooks/useImagesStore/queries.ts +193 -0
- 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/useInnerHtml/index.ts +39 -0
- package/src/hooks/useIntersection/index.ts +84 -0
- 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/useKeypress/index.ts +28 -0
- package/src/hooks/useLazyScript/index.ts +74 -0
- package/src/hooks/useLocalBackendIp/index.ts +34 -0
- package/src/hooks/useLocalSorage/index.ts +36 -0
- package/src/hooks/useLocationManager/index.ts +63 -0
- package/src/hooks/useLocationNavigate/index.ts +54 -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/helpers/mock.ts +0 -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/useMutateHeight/index.ts +36 -0
- package/src/hooks/useOrderClient/index.ts +5 -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/useOrdersFromStore/index.ts +77 -0
- 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.ts +964 -0
- 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/index.ts +3 -0
- package/src/hooks/useProviders/queries.ts +31 -0
- package/src/hooks/useProviders/useProvidersCreateStore/index.ts +13 -0
- package/src/hooks/useProviders/useProvidersDataStore/index.ts +25 -0
- package/src/hooks/useProvidersStore/index.ts +25 -0
- package/src/hooks/useProvidersStore/queries.ts +31 -0
- 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.ts +54 -0
- package/src/hooks/useRatingArrayData/queries.ts +19 -0
- package/src/hooks/useReactToPrint/index.ts +4 -0
- package/src/hooks/useReactToPrint/index.txt +1223 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/index.ts +24 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/queries.ts +48 -0
- package/src/hooks/useReport/index.ts +48 -0
- package/src/hooks/useReport/queries.ts +72 -0
- 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.ts +81 -0
- 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.ts +532 -0
- 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.ts +38 -0
- package/src/hooks/useSaveAvailableProduct/index.ts +32 -0
- package/src/hooks/useSaveAvailableProduct/queries.ts +10 -0
- package/src/hooks/useSaveLocation/index.ts +17 -0
- package/src/hooks/useSaveLocation/queries.ts +19 -0
- package/src/hooks/useSchedule/index.ts +35 -0
- package/src/hooks/useSchedule/queries.ts +43 -0
- package/src/hooks/useSchedule/schedule.ts +79 -0
- package/src/hooks/useScheduleData/index.ts +135 -0
- package/src/hooks/useScroll/index.ts +56 -0
- package/src/hooks/useScrollRotate/index.ts +16 -0
- package/src/hooks/useSetImageProducts/index.ts +59 -0
- package/src/hooks/useSetImageProducts/queries.ts +18 -0
- package/src/hooks/useSetSession/index.ts +44 -0
- package/src/hooks/useSetState/index.ts +24 -0
- 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.ts +195 -0
- package/src/hooks/useStatusOrdersClient/helpers/index.ts +14 -0
- package/src/hooks/useStatusOrdersClient/index.ts +18 -0
- package/src/hooks/useStatusOrdersClient/queries.ts +80 -0
- 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.ts +163 -0
- package/src/hooks/useStoreCalendar/index.ts +5 -0
- package/src/hooks/useStoreContacts/index.ts +53 -0
- package/src/hooks/useStoreContacts/queries.ts +48 -0
- 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.ts +39 -0
- 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.ts +131 -0
- package/src/hooks/useUpdateCartCookie/index.ts +60 -0
- package/src/hooks/useUpdateDashboardComponent/index.ts +91 -0
- package/src/hooks/useUpdateExistingOrders/index.ts +85 -0
- 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.ts +24 -0
- package/src/hooks/useUser/queries.ts +131 -0
- package/src/hooks/useWeeklyStockMovement/helpers/index.ts +32 -0
- package/src/hooks/useWeeklyStockMovement/index.ts +52 -0
- package/src/hooks/useWindowSize/index.ts +45 -0
- package/src/index.ts +11 -0
- package/src/mock/dessert/index.ts +16 -0
- package/src/mock/index.ts +1 -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 +16 -0
- package/tsconfig.json +21 -0
- package/tsup.config.ts +24 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { useMutation } from '@apollo/client'
|
|
2
|
+
import { useState } from 'react'
|
|
3
|
+
|
|
4
|
+
import { CREATE_ONE_EMPLOYEE_STORE_AND_USER } from './queries'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Custom hook to handle the createOneEmployeeStoreAndUser mutation.
|
|
8
|
+
*
|
|
9
|
+
* @param root0
|
|
10
|
+
* @param {Object}
|
|
11
|
+
* @param root0.sendNotification
|
|
12
|
+
* @param root0.onCompleted
|
|
13
|
+
* @param root0.onError
|
|
14
|
+
* @returns {{
|
|
15
|
+
* createEmployeeStoreAndUser: (input: IEmployeeStore) => Promise<void>,
|
|
16
|
+
* loading: boolean,
|
|
17
|
+
* error: Error | null,
|
|
18
|
+
* data: Object | null
|
|
19
|
+
* }} An object containing the mutation function, loading status, error, and data.
|
|
20
|
+
*/
|
|
21
|
+
export const useCreateEmployeeStoreAndUser = ({
|
|
22
|
+
sendNotification = () => {
|
|
23
|
+
return {
|
|
24
|
+
description: '',
|
|
25
|
+
title: '',
|
|
26
|
+
backgroundColor: ''
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
onCompleted = () => {
|
|
30
|
+
return {
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
onError = () => {
|
|
34
|
+
return {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
} = {}) => {
|
|
38
|
+
const [createEmployeeStoreAndUserMutation, { loading, error, data }] = useMutation(CREATE_ONE_EMPLOYEE_STORE_AND_USER, {
|
|
39
|
+
onError: () => {
|
|
40
|
+
sendNotification({
|
|
41
|
+
description: 'Error creando empleado',
|
|
42
|
+
title: 'Error',
|
|
43
|
+
backgroundColor: 'error'
|
|
44
|
+
})
|
|
45
|
+
},
|
|
46
|
+
onCompleted: (response) => {
|
|
47
|
+
console.log(response)
|
|
48
|
+
const { createOneEmployeeStoreAndUser } = response ?? {}
|
|
49
|
+
const { message, success } = createOneEmployeeStoreAndUser ?? {}
|
|
50
|
+
if (success === false) {
|
|
51
|
+
onError(response)
|
|
52
|
+
}
|
|
53
|
+
if (success) {
|
|
54
|
+
onCompleted(response)
|
|
55
|
+
}
|
|
56
|
+
sendNotification({
|
|
57
|
+
description: message,
|
|
58
|
+
title: success ? 'Exito' : 'Error',
|
|
59
|
+
backgroundColor: success ? 'success' : 'error'
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
const [errors, setErrors] = useState([])
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Calls the createOneEmployeeStoreAndUser mutation.
|
|
67
|
+
*
|
|
68
|
+
* @param {Object} input - The input data for the mutation.
|
|
69
|
+
* @returns {Promise<void>}
|
|
70
|
+
*/
|
|
71
|
+
const createEmployeeStoreAndUser = async (input) => {
|
|
72
|
+
try {
|
|
73
|
+
const response = await createEmployeeStoreAndUserMutation({ variables: { input } })
|
|
74
|
+
if (response.data.createOneEmployeeStoreAndUser.errors) {
|
|
75
|
+
setErrors(response.data.createOneEmployeeStoreAndUser.errors)
|
|
76
|
+
} else {
|
|
77
|
+
setErrors([])
|
|
78
|
+
}
|
|
79
|
+
} catch (err) {
|
|
80
|
+
setErrors([{ message: err.message }])
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return [createEmployeeStoreAndUser, {
|
|
85
|
+
loading,
|
|
86
|
+
error,
|
|
87
|
+
data,
|
|
88
|
+
errors
|
|
89
|
+
}]
|
|
90
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
|
+
|
|
3
|
+
export const on = ({ eventType, callBack }) => {
|
|
4
|
+
document.addEventListener(eventType, callBack)
|
|
5
|
+
}
|
|
6
|
+
export const off = ({ eventType, callBack }) => {
|
|
7
|
+
document.removeEventListener(eventType, callBack)
|
|
8
|
+
}
|
|
9
|
+
export const once = ({ eventType, callBack }) => {
|
|
10
|
+
const handleEventOnce = (event) => {
|
|
11
|
+
callBack(event)
|
|
12
|
+
off({ eventType, callBack: handleEventOnce })
|
|
13
|
+
}
|
|
14
|
+
on({ eventType, callBack: handleEventOnce })
|
|
15
|
+
}
|
|
16
|
+
export const trigger = ({ eventType, data }) => {
|
|
17
|
+
const event = new CustomEvent(eventType, { detail: data })
|
|
18
|
+
document.dispatchEvent(event)
|
|
19
|
+
}
|
|
20
|
+
// This function is used to subscribe components an any event
|
|
21
|
+
export const useEvents = ({ eventType, callBack }) => {
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
on({ eventType, callBack })
|
|
24
|
+
return () => {
|
|
25
|
+
off({ eventType, callBack })
|
|
26
|
+
}
|
|
27
|
+
}, [eventType, callBack])
|
|
28
|
+
}
|
|
29
|
+
// This function create and dispatch event
|
|
30
|
+
export const useTrigerEvent = () => {
|
|
31
|
+
return {
|
|
32
|
+
trigger
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useQuery } from '@apollo/client'
|
|
2
|
+
|
|
3
|
+
import { filterAndSortByDate } from '../useRestaurant/helpers'
|
|
4
|
+
import { getStatusForStores } from '../useRestaurant/helpers/manageStatusOpen'
|
|
5
|
+
|
|
6
|
+
import { GET_ALL_FAV_STORE } from './queries'
|
|
7
|
+
|
|
8
|
+
export const useFavoriteStores = () => {
|
|
9
|
+
const {
|
|
10
|
+
data,
|
|
11
|
+
loading,
|
|
12
|
+
error
|
|
13
|
+
} = useQuery(GET_ALL_FAV_STORE, {
|
|
14
|
+
fetchPolicy: 'cache-and-network',
|
|
15
|
+
onError: () => {
|
|
16
|
+
console.log('')
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
const newArray = data?.getFavorite?.map(store => {
|
|
20
|
+
return {
|
|
21
|
+
...store.getOneStore
|
|
22
|
+
}
|
|
23
|
+
}) || []
|
|
24
|
+
const dataSort = filterAndSortByDate(newArray)
|
|
25
|
+
|
|
26
|
+
const statuses = getStatusForStores(dataSort)
|
|
27
|
+
|
|
28
|
+
const favoriteStores = statuses || []
|
|
29
|
+
|
|
30
|
+
return [loading ? [] : favoriteStores, { loading, error }]
|
|
31
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { gql } from '@apollo/client'
|
|
2
|
+
|
|
3
|
+
export const GET_ALL_FAV_STORE = gql`
|
|
4
|
+
query getFavorite {
|
|
5
|
+
getFavorite {
|
|
6
|
+
fIStoreId
|
|
7
|
+
fState
|
|
8
|
+
createAt
|
|
9
|
+
updateAt
|
|
10
|
+
idStore
|
|
11
|
+
|
|
12
|
+
getOneStore {
|
|
13
|
+
getStoreSchedules {
|
|
14
|
+
schId
|
|
15
|
+
idStore
|
|
16
|
+
schDay
|
|
17
|
+
schHoSta
|
|
18
|
+
schHoEnd
|
|
19
|
+
schState
|
|
20
|
+
}
|
|
21
|
+
deliveryTimeMinutes
|
|
22
|
+
scheduleOpenAll
|
|
23
|
+
idStore
|
|
24
|
+
cId
|
|
25
|
+
id
|
|
26
|
+
Image
|
|
27
|
+
open
|
|
28
|
+
cateStore {
|
|
29
|
+
catStore
|
|
30
|
+
cName
|
|
31
|
+
}
|
|
32
|
+
ctId
|
|
33
|
+
catStore
|
|
34
|
+
dId
|
|
35
|
+
storeName
|
|
36
|
+
Image
|
|
37
|
+
city {
|
|
38
|
+
ctId
|
|
39
|
+
dId
|
|
40
|
+
cName
|
|
41
|
+
}
|
|
42
|
+
department {
|
|
43
|
+
dId
|
|
44
|
+
cId
|
|
45
|
+
dName
|
|
46
|
+
}
|
|
47
|
+
pais {
|
|
48
|
+
cId
|
|
49
|
+
cName
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* It fetches a json response, and if the response is not ok, it throws an error with the response and
|
|
3
|
+
* the data
|
|
4
|
+
* @param args - The arguments to pass to fetch.
|
|
5
|
+
*/
|
|
6
|
+
export const fetchJson = async (...args) => {
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(...args)
|
|
9
|
+
// if the server replies, there's always some data in json
|
|
10
|
+
// if there's a network error, it will throw at the previous line
|
|
11
|
+
const data = await response.json()
|
|
12
|
+
if (response.ok) {
|
|
13
|
+
return data
|
|
14
|
+
}
|
|
15
|
+
const error = new Error(response.statusText)
|
|
16
|
+
error.response = response
|
|
17
|
+
error.data = data
|
|
18
|
+
throw error
|
|
19
|
+
} catch (error) {
|
|
20
|
+
if (!error.data) {
|
|
21
|
+
error.data = { message: error.message }
|
|
22
|
+
}
|
|
23
|
+
throw error
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
useEffect,
|
|
3
|
+
useRef,
|
|
4
|
+
useState
|
|
5
|
+
} from 'react'
|
|
6
|
+
|
|
7
|
+
export const useFetchMoreInteractions = ({
|
|
8
|
+
render,
|
|
9
|
+
fetchMore = true,
|
|
10
|
+
callback = () => {}
|
|
11
|
+
}) => {
|
|
12
|
+
const loadingRef = useRef()
|
|
13
|
+
|
|
14
|
+
const useOnScreen = ref => {
|
|
15
|
+
const [isIntersecting, setIsIntersecting] = useState(false)
|
|
16
|
+
|
|
17
|
+
const observer = new IntersectionObserver(
|
|
18
|
+
([entry]) => {return setIsIntersecting(entry.isIntersecting)}
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (ref.current) observer.observe(ref.current)
|
|
23
|
+
// Remove the observer as soon as the component is unmounted
|
|
24
|
+
return () => { observer.disconnect() }
|
|
25
|
+
}, [ref, observer])
|
|
26
|
+
|
|
27
|
+
return isIntersecting
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const isVisible = useOnScreen(loadingRef)
|
|
31
|
+
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (isVisible && fetchMore) callback()
|
|
34
|
+
}, [isVisible, callback, fetchMore])
|
|
35
|
+
|
|
36
|
+
return <div ref={loadingRef}>
|
|
37
|
+
{isVisible && fetchMore ? render || <div style={{ background: 'red' }} >Loading...{isVisible && 'lol'}</div> : <></>}
|
|
38
|
+
</div>
|
|
39
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// useFilterConfigs.ts
|
|
2
|
+
import { gql, useQuery } from '@apollo/client'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* GraphQL query: expects the backend to return a JSON (or custom scalar) containing filterTabs
|
|
6
|
+
*/
|
|
7
|
+
const GET_FILTER_CONFIGS = gql`
|
|
8
|
+
query GetFilterConfigs($idStore: String) {
|
|
9
|
+
filterConfigs(idStore: $idStore) {
|
|
10
|
+
id
|
|
11
|
+
idStore
|
|
12
|
+
filterTabs
|
|
13
|
+
active
|
|
14
|
+
priority
|
|
15
|
+
createdAt
|
|
16
|
+
updatedAt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Type definitions matching DB/json structure
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @typedef {Object} FilterValue
|
|
27
|
+
* @property {string} [id]
|
|
28
|
+
* @property {string} description
|
|
29
|
+
* @property {number|string|null} [value]
|
|
30
|
+
* @property {string|null} [imageUrn]
|
|
31
|
+
*/
|
|
32
|
+
export type FilterValue = {
|
|
33
|
+
id?: string
|
|
34
|
+
description: string
|
|
35
|
+
value?: number | string | null
|
|
36
|
+
imageUrn?: string | null
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @typedef {Object} FilterGroup
|
|
41
|
+
* @property {string} id
|
|
42
|
+
* @property {string} description
|
|
43
|
+
* @property {string} displayType
|
|
44
|
+
* @property {FilterValue[]} values
|
|
45
|
+
*/
|
|
46
|
+
export type FilterGroup = {
|
|
47
|
+
id: string
|
|
48
|
+
description: string
|
|
49
|
+
displayType: string
|
|
50
|
+
values: FilterValue[]
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {Object} FilterTab
|
|
55
|
+
* @property {string} id
|
|
56
|
+
* @property {string} name
|
|
57
|
+
* @property {FilterGroup[]} filterGroups
|
|
58
|
+
*/
|
|
59
|
+
export type FilterTab = {
|
|
60
|
+
id: string
|
|
61
|
+
name: string
|
|
62
|
+
filterGroups: FilterGroup[]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @typedef {Object} FilterConfigRecord
|
|
67
|
+
* @property {string} id
|
|
68
|
+
* @property {string|null} idStore
|
|
69
|
+
* @property {FilterTab[]} filterTabs
|
|
70
|
+
* @property {boolean} active
|
|
71
|
+
* @property {number} priority
|
|
72
|
+
*/
|
|
73
|
+
export type FilterConfigRecord = {
|
|
74
|
+
id: string
|
|
75
|
+
idStore: string | null
|
|
76
|
+
filterTabs: FilterTab[]
|
|
77
|
+
active: boolean
|
|
78
|
+
priority: number
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Runtime guard to ensure shape is roughly correct
|
|
83
|
+
* @param anyData any
|
|
84
|
+
* @returns boolean
|
|
85
|
+
*/
|
|
86
|
+
const isFilterTabs = (anyData: any): any is FilterTab[] => {
|
|
87
|
+
if (!Array.isArray(anyData)) return false
|
|
88
|
+
for (const tab of anyData) {
|
|
89
|
+
if (typeof tab?.id !== 'string' || typeof tab?.name !== 'string') return false
|
|
90
|
+
if (!Array.isArray(tab.filterGroups)) return false
|
|
91
|
+
for (const g of tab.filterGroups) {
|
|
92
|
+
if (typeof g?.id !== 'string') return false
|
|
93
|
+
if (!Array.isArray(g.values)) return false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return true
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Hook options
|
|
101
|
+
*/
|
|
102
|
+
export type UseFilterConfigsOptions = {
|
|
103
|
+
idStore?: string | null
|
|
104
|
+
pollIntervalMs?: number
|
|
105
|
+
skip?: boolean
|
|
106
|
+
onError?: (err: Error) => void
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Hook return
|
|
111
|
+
*/
|
|
112
|
+
export type UseFilterConfigsResult = {
|
|
113
|
+
data: FilterTab[]
|
|
114
|
+
rawRecords: FilterConfigRecord[] | null
|
|
115
|
+
loading: boolean
|
|
116
|
+
error: Error | null
|
|
117
|
+
refetch: () => Promise<void>
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Custom hook to fetch filter configs from GraphQL and expose typed, validated tabs.
|
|
122
|
+
* - Returns empty array when data is invalid (defensive).
|
|
123
|
+
* - Accepts idStore and poll interval as parameters for flexibility.
|
|
124
|
+
*
|
|
125
|
+
* @param {UseFilterConfigsOptions} options
|
|
126
|
+
* @returns {UseFilterConfigsResult}
|
|
127
|
+
*/
|
|
128
|
+
export const useFilterConfigs = ({
|
|
129
|
+
skip = false,
|
|
130
|
+
onError
|
|
131
|
+
}: UseFilterConfigsOptions = {}): UseFilterConfigsResult => {
|
|
132
|
+
const { data, loading, error, refetch } = useQuery(
|
|
133
|
+
GET_FILTER_CONFIGS,
|
|
134
|
+
{
|
|
135
|
+
skip
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
if (error && onError) onError(error as Error)
|
|
140
|
+
|
|
141
|
+
const rawRecords =
|
|
142
|
+
Array.isArray((data as any)?.filterConfigs) ? (data as any).filterConfigs as FilterConfigRecord[] : null
|
|
143
|
+
|
|
144
|
+
let tabs: FilterTab[] = []
|
|
145
|
+
|
|
146
|
+
if (rawRecords && rawRecords.length > 0) {
|
|
147
|
+
// pick the active config with highest priority (lowest number)
|
|
148
|
+
const active = rawRecords
|
|
149
|
+
.filter(r => {return r.active !== false})
|
|
150
|
+
.sort((a, b) => {return (a.priority ?? 9999) - (b.priority ?? 9999)})[0]
|
|
151
|
+
|
|
152
|
+
const candidate = active ?? rawRecords[0]
|
|
153
|
+
|
|
154
|
+
if (candidate && isFilterTabs(candidate.filterTabs)) {
|
|
155
|
+
tabs = candidate.filterTabs
|
|
156
|
+
} else {
|
|
157
|
+
// defensive logging — don't throw to avoid crashing UI, return empty array
|
|
158
|
+
|
|
159
|
+
console.warn('useFilterConfigs: invalid filterTabs structure', candidate?.filterTabs)
|
|
160
|
+
tabs = []
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return {
|
|
165
|
+
data: [{ 'id': 'BASIC', 'name': 'Básicos', 'filterGroups': [{ 'id': 'DELIVERY_MODE', 'description': 'Modo de entrega', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'DELIVERY', 'description': 'Entrega' }, { 'id': 'TAKEOUT', 'description': 'Pra retirar' }] }, { 'id': 'SORTING', 'description': 'Ordenar por', 'displayType': 'GRID', 'values': [{ 'id': 'DEFAULT', 'description': 'Ordenação Padrão' }, { 'id': 'PRICE_RANGE:ASC', 'description': 'Preço' }, { 'id': 'USER_RATING:DESC', 'description': 'Avaliação' }, { 'id': 'DELIVERY_TIME:ASC', 'description': 'Tempo de Entrega' }, { 'id': 'DELIVERY_FEE:ASC', 'description': 'Taxa de Entrega' }, { 'id': 'DISTANCE:ASC', 'description': 'Menor distância' }] }, { 'id': 'DISTANCE', 'description': 'Distância', 'displayType': 'SLIDER', 'values': [{ 'id': 'MIN_VALUE', 'description': '1' }, { 'id': 'MAX_VALUE', 'description': '10' }] }, { 'id': 'DELIVERY_FEE', 'description': 'Taxa de entrega', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'FREE', 'description': 'Grátis', 'value': 0 }, { 'id': 'MAX_FIVE', 'description': 'até R$ 5,00', 'value': 5 }, { 'id': 'MAX_TEN', 'description': 'até R$ 10,00', 'value': 10 }] }, { 'id': 'TAGS', 'description': 'Filtros especiais', 'displayType': 'CHECKBOX', 'values': [{ 'id': 'SUPER_RESTAURANT', 'imageUrn': 'SUPER_RESTAURANT.png', 'description': 'Super-Restaurantes' }, { 'id': 'SUPPORTS_ORDER_TRACKING', 'imageUrn': 'SUPPORTS_ORDER_TRACKING.png', 'description': 'Entrega Parceira' }, { 'id': 'SUPPORTS_ANY_TRACKING', 'imageUrn': 'SUPPORTS_ANY_TRACKING.png', 'description': 'Entrega Rastreável' }, { 'id': 'SUPPORTS_SCHEDULING', 'imageUrn': 'SUPPORTS_SCHEDULING.png', 'description': 'Aceita agendamento' }] }] }, { 'id': 'CATEGORY', 'name': 'Categorias', 'filterGroups': [{ 'id': 'MERCHANT_TYPE', 'description': 'Tipo de loja', 'displayType': 'GRID', 'values': [{ 'id': 'ALL', 'description': 'Todas as lojas' }, { 'id': 'RESTAURANT', 'description': 'Restaurante' }, { 'id': 'MARKET', 'description': 'Mercado' }] }, { 'id': 'AVAILABLE_CATEGORIES', 'description': 'Categorias', 'displayType': 'WORD_CLOUD', 'values': [{ 'description': 'Africana', 'id': 'AF1' }, { 'description': 'Alemã', 'id': 'ALE' }, { 'description': 'Árabe', 'id': 'ARA' }, { 'description': 'Argentina', 'id': 'AR1' }, { 'description': 'Asiática', 'id': 'ASI' }, { 'description': 'Açaí', 'id': 'AC1' }, { 'description': 'Baiana', 'id': 'BA1' }, { 'description': 'Bebidas', 'id': 'BEB' }, { 'description': 'Brasileira', 'id': 'BRA' }, { 'description': 'Cafeteria', 'id': 'CA1' }, { 'description': 'Carnes', 'id': 'CAR' }, { 'description': 'Casa de Sucos', 'id': 'CS1' }, { 'description': 'Chinesa', 'id': 'CHI' }, { 'description': 'Colombiana', 'id': 'CO1' }, { 'description': 'Congelados Fit', 'id': 'CF1' }, { 'description': 'Congelados', 'id': 'CN1' }, { 'description': 'Contemporânea', 'id': 'CNT' }, { 'description': 'Conveniência', 'id': 'CV1' }, { 'description': 'Coreana', 'id': 'CR1' }, { 'description': 'Cozinha rápida', 'id': 'CRP' }, { 'description': 'Crepe', 'id': 'CP1' }, { 'description': 'Doces & Bolos', 'id': 'DCE' }, { 'description': 'Espanhola', 'id': 'ES1' }, { 'description': 'Francesa', 'id': 'FRA' }, { 'description': 'Frangos', 'id': 'FR1' }, { 'description': 'Frutos do mar', 'id': 'FRU' }, { 'description': 'Gaúcha', 'id': 'GA1' }, { 'description': 'Grega', 'id': 'GRC' }, { 'description': 'Hambúrguer', 'id': 'BUR' }, { 'description': 'Indiana', 'id': 'IND' }, { 'description': 'Italiana', 'id': 'ITA' }, { 'description': 'Japonesa', 'id': 'JAP' }, { 'description': 'Lanches', 'id': 'LCH' }, { 'description': 'Marmita', 'id': 'MA1' }, { 'description': 'Marroquina', 'id': 'MAR' }, { 'description': 'Mediterrânea', 'id': 'MED' }, { 'description': 'Mercado 🛒', 'id': 'MER' }, { 'description': 'Mexicana', 'id': 'MEX' }, { 'description': 'Mineira', 'id': 'MI1' }, { 'description': 'Nordestina', 'id': 'NO1' }, { 'description': 'Padaria', 'id': 'PA1' }, { 'description': 'Panqueca', 'id': 'PQC' }, { 'description': 'Paranaense', 'id': 'PR1' }, { 'description': 'Pastel', 'id': 'PAS' }, { 'description': 'Peixes', 'id': 'PX1' }, { 'description': 'Peruana', 'id': 'PER' }, { 'description': 'Pizza', 'id': 'PIZ' }, { 'description': 'Portuguesa', 'id': 'POR' }, { 'description': 'Presentes', 'id': 'PRE' }, { 'description': 'Salgados', 'id': 'SAG' }, { 'description': 'Saudável', 'id': 'SAU' }, { 'description': 'Sopas & Caldos', 'id': 'SP1' }, { 'description': 'Sorvetes', 'id': 'SOR' }, { 'description': 'Tailandesa', 'id': 'THA' }, { 'description': 'Tapioca', 'id': 'TA1' }, { 'description': 'Típica do Norte', 'id': 'TN1' }, { 'description': 'Variada', 'id': 'VAR' }, { 'description': 'Vegana', 'id': 'VE1' }, { 'description': 'Vegetariana', 'id': 'VEG' }, { 'description': 'Xis', 'id': 'XI1' }, { 'description': 'Yakisoba', 'id': 'YA1' }] }] }, { 'id': 'PAYMENT', 'name': 'Pagamentos', 'filterGroups': [{ 'id': 'MEDIUM_PRICE', 'description': 'Preço médio', 'displayType': 'WORD_CLOUD_SINGLE', 'values': [{ 'id': 'CHEAPEST', 'description': '$' }, { 'id': 'CHEAP', 'description': '$$' }, { 'id': 'MODERATE', 'description': '$$$' }, { 'id': 'EXPENSIVE', 'description': '$$$$' }, { 'id': 'MOST_EXPENSIVE', 'description': '$$$$$' }] }, { 'id': 'ONLINE_PAYMENTS', 'description': 'Pagamento pelo app', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'PIX', 'description': 'pix' }, { 'id': 'ELO', 'description': 'Elo' }, { 'id': 'MC', 'description': 'Mastercard' }, { 'id': 'MCMA', 'description': 'Mastercard Maestro' }, { 'id': 'VIS', 'description': 'Visa' }, { 'id': 'VISE', 'description': 'Visa Electron' }, { 'id': 'AM', 'description': 'Amex' }, { 'id': 'DNR', 'description': 'Diners' }] }, { 'id': 'ONLINE_PAYMENTS_VR', 'description': 'Vale-refeição/alimentação pelo app', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'IMV', 'description': 'iFood Refeição' }, { 'id': 'VRO', 'description': 'VR Refeição' }, { 'id': 'SRP', 'description': 'Sodexo Refeição' }, { 'id': 'ALR', 'description': 'Alelo Refeição' }, { 'id': 'TRO', 'description': 'Ticket' }, { 'id': 'BENRON', 'description': 'Ben Refeição' }] }, { 'id': 'OFFLINE_PAYMENTS', 'description': 'Pagamento na entrega', 'displayType': 'WORD_CLOUD', 'values': [{ 'id': 'DIN', 'description': 'Dinheiro' }, { 'id': 'RSODEX', 'description': 'Sodexo' }, { 'id': 'VVREST', 'description': 'Vale Alelo Refeição' }, { 'id': 'VR_SMA', 'description': 'VR Refeição' }, { 'id': 'BENVVR', 'description': 'Ben Refeição' }, { 'id': 'TRE', 'description': 'Ticket' }, { 'id': 'RDREST', 'description': 'Mastercard - Crédito' }, { 'id': 'MEREST', 'description': 'Mastercard' }, { 'id': 'VSREST', 'description': 'Visa - Crédito' }, { 'id': 'VIREST', 'description': 'Visa' }, { 'id': 'REC', 'description': 'Elo - Crédito' }, { 'id': 'RED', 'description': 'Elo' }, { 'id': 'RHIP', 'description': 'Hipercard' }, { 'id': 'TVER', 'description': 'Verocard' }, { 'id': 'RAM', 'description': 'American Express' }, { 'id': 'CPRCAR', 'description': 'Cooper Card' }, { 'id': 'GRNCAR', 'description': 'Green Card' }, { 'id': 'GRNCPL', 'description': 'Green Card (papel)' }, { 'id': 'RSELE', 'description': 'Refeisul' }, { 'id': 'VALECA', 'description': 'Vale Card' }, { 'id': 'BANRC', 'description': 'Banricompras - Crédito' }, { 'id': 'BANRD', 'description': 'Banricompras' }, { 'id': 'DNREST', 'description': 'Diners' }, { 'id': 'GOODC', 'description': 'Goodcard' }, { 'id': 'VERDEC', 'description': 'Verdecard' }, { 'id': 'CHE', 'description': 'Cheque' }] }] }],
|
|
166
|
+
rawRecords,
|
|
167
|
+
loading,
|
|
168
|
+
error: error ? (error as Error) : null,
|
|
169
|
+
refetch: async () => {
|
|
170
|
+
await refetch()
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// import md5 from 'md5'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
async function getCPUInfo () {
|
|
7
|
+
if (navigator.hardwareConcurrency) {
|
|
8
|
+
try {
|
|
9
|
+
const logicalCores = navigator.hardwareConcurrency
|
|
10
|
+
const agent = window.navigator.userAgent
|
|
11
|
+
const hyperThreaded = /Intel|Apple/.test(agent) && /Win64|Linux x86_64|MacIntel/.test(agent)
|
|
12
|
+
|
|
13
|
+
// Ajustar el número de núcleos lógicos si se sospecha hiperprocesamiento
|
|
14
|
+
const physicalCores = hyperThreaded ? logicalCores / 2 : logicalCores
|
|
15
|
+
|
|
16
|
+
const cpuInfo = {
|
|
17
|
+
logicalCores,
|
|
18
|
+
physicalCores,
|
|
19
|
+
hyperThreaded
|
|
20
|
+
}
|
|
21
|
+
return JSON.stringify(cpuInfo)
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error('Error al obtener información de la CPU:', error)
|
|
24
|
+
return 'cpu-info-error'
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
return 'cpu-info-not-available'
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
async function generateFingerprint () {
|
|
35
|
+
const canvas = document.createElement('canvas')
|
|
36
|
+
const audioContext = new (window.AudioContext || window.webkitAudioContext)()
|
|
37
|
+
|
|
38
|
+
const userAgent = navigator.userAgent
|
|
39
|
+
const language = navigator.language
|
|
40
|
+
const colorDepth = window.screen.colorDepth
|
|
41
|
+
const availableScreenHeight = window.screen.availHeight
|
|
42
|
+
const platform = navigator.platform
|
|
43
|
+
const cpuClass = navigator.cpuClass || 'unknown'
|
|
44
|
+
|
|
45
|
+
const canvasFingerprint = await generateCanvasFingerprint(canvas)
|
|
46
|
+
const audioFingerprint = await generateAudioFingerprint(audioContext)
|
|
47
|
+
|
|
48
|
+
const cpuInfo = await getCPUInfo()
|
|
49
|
+
const webGLInfo = await getWebGLInfo()
|
|
50
|
+
const fonts = getInstalledFonts()
|
|
51
|
+
const touchscreenInfo = getTouchscreenInfo()
|
|
52
|
+
|
|
53
|
+
const fingerprintData = {
|
|
54
|
+
browser: {
|
|
55
|
+
userAgent,
|
|
56
|
+
language,
|
|
57
|
+
colorDepth,
|
|
58
|
+
availableScreenHeight,
|
|
59
|
+
plugins: Array.from(navigator.plugins).map(plugin => {return plugin.name}).join(','),
|
|
60
|
+
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
61
|
+
hardwareConcurrency: cpuInfo.logicalCores || 'unknown',
|
|
62
|
+
platformVersion: navigator.platformVersion || 'unknown'
|
|
63
|
+
},
|
|
64
|
+
device: {
|
|
65
|
+
platform,
|
|
66
|
+
cpuClass
|
|
67
|
+
},
|
|
68
|
+
canvas: canvasFingerprint,
|
|
69
|
+
audio: audioFingerprint,
|
|
70
|
+
cpu: cpuInfo,
|
|
71
|
+
webgl: webGLInfo,
|
|
72
|
+
fonts,
|
|
73
|
+
touchscreen: touchscreenInfo
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const fingerprint = JSON.stringify(fingerprintData)
|
|
77
|
+
// const uniqueID = md5(fingerprint)
|
|
78
|
+
return fingerprint
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Función para generar huella digital del audio
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param audioContext
|
|
85
|
+
*/
|
|
86
|
+
async function generateAudioFingerprint (audioContext) {
|
|
87
|
+
if (audioContext) {
|
|
88
|
+
try {
|
|
89
|
+
await audioContext.resume()
|
|
90
|
+
|
|
91
|
+
// Obtén propiedades del audio que puedas obtener en modo incógnito
|
|
92
|
+
const audioProperties = {
|
|
93
|
+
isAudioContextAvailable: true
|
|
94
|
+
// Agrega más propiedades relevantes aquí
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return audioProperties
|
|
98
|
+
} catch (error) {
|
|
99
|
+
console.error('Error al generar huella digital de audio:', error)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return { isAudioContextAvailable: false }
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Función para generar huella digital del canvas
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* @param canvas
|
|
110
|
+
*/
|
|
111
|
+
async function generateCanvasFingerprint (canvas) {
|
|
112
|
+
if (canvas) {
|
|
113
|
+
try {
|
|
114
|
+
canvas.width = 200
|
|
115
|
+
canvas.height = 200
|
|
116
|
+
const context = canvas.getContext('2d')
|
|
117
|
+
context.clearRect(0, 0, canvas.width, canvas.height)
|
|
118
|
+
context.fillStyle = '#f60'
|
|
119
|
+
context.fillRect(125, 1, 62, 20)
|
|
120
|
+
context.fillStyle = '#069'
|
|
121
|
+
context.font = '16pt Arial'
|
|
122
|
+
context.fillText('Cwm fjordbank glyphs vext quiz', 125, 20)
|
|
123
|
+
|
|
124
|
+
// Obtén más propiedades del canvas que puedas obtener en modo incógnito
|
|
125
|
+
const canvasProperties = {
|
|
126
|
+
width: canvas.width,
|
|
127
|
+
height: canvas.height
|
|
128
|
+
// Agrega más propiedades relevantes aquí
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return canvasProperties
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.error('Error al generar huella digital del canvas:', error)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return { width: 0, height: 0 }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
*
|
|
142
|
+
*/
|
|
143
|
+
async function getWebGLInfo () {
|
|
144
|
+
if ('WebGLRenderingContext' in window) {
|
|
145
|
+
const canvas = document.createElement('canvas')
|
|
146
|
+
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')
|
|
147
|
+
|
|
148
|
+
if (gl) {
|
|
149
|
+
const renderer = gl.getParameter(gl.RENDERER)
|
|
150
|
+
const version = gl.getParameter(gl.VERSION)
|
|
151
|
+
|
|
152
|
+
// Obtener más información sobre las capacidades WebGL si es necesario
|
|
153
|
+
|
|
154
|
+
return `${renderer}-${version}`
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return 'webgl-info-not-supported'
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
*
|
|
163
|
+
*/
|
|
164
|
+
function getInstalledFonts () {
|
|
165
|
+
const fonts = []
|
|
166
|
+
|
|
167
|
+
if ('fonts' in document) {
|
|
168
|
+
document.fonts.forEach(font => {
|
|
169
|
+
fonts.push(font.family)
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return fonts.join(',')
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
*
|
|
178
|
+
*/
|
|
179
|
+
function getTouchscreenInfo () {
|
|
180
|
+
if ('maxTouchPoints' in navigator) {
|
|
181
|
+
const maxTouchPoints = navigator.maxTouchPoints
|
|
182
|
+
const touchEvent = 'ontouchstart' in window ? 'true' : 'false'
|
|
183
|
+
|
|
184
|
+
return `${maxTouchPoints}-${touchEvent}`
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return 'touchscreen-info-not-supported'
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
*/
|
|
193
|
+
export async function fingerprintJs () {
|
|
194
|
+
const fingerprint = await generateFingerprint()
|
|
195
|
+
// const uniqueID = md5(fingerprint)
|
|
196
|
+
return fingerprint
|
|
197
|
+
}
|