npm-pkg-hook 1.12.7 → 1.12.9
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/.env +5 -0
- package/.github/pull_request_template.md +18 -0
- package/.github/workflows/pepeline.yaml +30 -0
- package/dist/index.js +47752 -10080
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +47068 -9612
- package/dist/index.mjs.map +1 -0
- package/eslint.config.mts +153 -0
- package/expire.json +1 -0
- package/jsconfig.json +28 -0
- package/package.json +24 -61
- 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 +153 -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 +22 -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 +29 -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 +78 -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.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 +8 -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
- package/dist/index.cjs +0 -20089
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
|
|
3
|
+
export const useLocalStorage = (key: string, initialValue: string | object | any) => {
|
|
4
|
+
// const { setAlertBox } = useContext(Context)
|
|
5
|
+
// State to store our value
|
|
6
|
+
// Pass initial state function to useState so logic is only executed once
|
|
7
|
+
const [storedValue, setStoredValue] = useState(() => {
|
|
8
|
+
try {
|
|
9
|
+
// Get from local storage by key
|
|
10
|
+
const item = window.localStorage.getItem(key)
|
|
11
|
+
// Parse stored json or if none return initialValue
|
|
12
|
+
return item ? JSON.parse(item) : initialValue
|
|
13
|
+
} catch (error) {
|
|
14
|
+
// If error also return initialValue
|
|
15
|
+
return initialValue
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
// Return a wrapped version of useState's setter function that ...
|
|
20
|
+
// ... persists the new value to localStorage.
|
|
21
|
+
const setValue = (value: string | object | any) => {
|
|
22
|
+
try {
|
|
23
|
+
// Allow value to be a function so we have same API as useState
|
|
24
|
+
const valueToStore =
|
|
25
|
+
value instanceof Function ? value(storedValue) : value
|
|
26
|
+
// Save state
|
|
27
|
+
setStoredValue(valueToStore)
|
|
28
|
+
// Save to local storage
|
|
29
|
+
window.localStorage.setItem(key, JSON.stringify(valueToStore))
|
|
30
|
+
} catch (error) {
|
|
31
|
+
// A more advanced implementation would handle the error case
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return [storedValue, setValue]
|
|
36
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Hook para gestionar la lógica de ubicaciones, valores y errores.
|
|
5
|
+
*
|
|
6
|
+
* @param {Function} getDepartments - Función para obtener los departamentos basado en el ID de país.
|
|
7
|
+
* @param {Function} getCities - Función para obtener las ciudades basado en el ID de departamento.
|
|
8
|
+
*
|
|
9
|
+
* @returns {Object} - Retorna los estados y funciones de manejo asociados.
|
|
10
|
+
*/
|
|
11
|
+
export function useLocationManager (getDepartments, getCities) {
|
|
12
|
+
const [values, setValues] = useState({})
|
|
13
|
+
console.log('🚀 ~ useLocationManager ~ values:', values)
|
|
14
|
+
const [errors, setErrors] = useState({})
|
|
15
|
+
const [showLocation, setShowLocation] = useState(true)
|
|
16
|
+
|
|
17
|
+
const handleUpdateValues = (name, value) => {
|
|
18
|
+
setValues(prevValues => {return { ...prevValues, [name]: value }})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const handleUpdateErrors = (name, error) => {
|
|
22
|
+
setErrors(prevErrors => {return { ...prevErrors, [name]: error }})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const handleCountrySearch = (value) => {
|
|
26
|
+
getDepartments({ variables: { cId: value } })
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const handleDepartmentSearch = (value) => {
|
|
30
|
+
setValues(prevValues => {return { ...prevValues, ctId: '' }})
|
|
31
|
+
getCities({ variables: { dId: value } })
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const handleChangeLocation = (e, error) => {
|
|
35
|
+
const { name, value } = e.target
|
|
36
|
+
handleUpdateValues(name, value)
|
|
37
|
+
handleUpdateErrors(name, error)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const handleChangeSearch = (e) => {
|
|
41
|
+
const { name, value } = e.target
|
|
42
|
+
switch (name) {
|
|
43
|
+
case 'countryId':
|
|
44
|
+
handleCountrySearch(value)
|
|
45
|
+
break
|
|
46
|
+
case 'code_dId':
|
|
47
|
+
handleDepartmentSearch(value)
|
|
48
|
+
break
|
|
49
|
+
default:
|
|
50
|
+
break
|
|
51
|
+
}
|
|
52
|
+
handleChangeLocation(e)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
values,
|
|
57
|
+
errors,
|
|
58
|
+
showLocation,
|
|
59
|
+
setShowLocation,
|
|
60
|
+
handleChangeSearch,
|
|
61
|
+
setValues
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react'
|
|
2
|
+
|
|
3
|
+
const defaultSettings = {
|
|
4
|
+
enableHighAccuracy: false,
|
|
5
|
+
timeout: Infinity,
|
|
6
|
+
maximumAge: 0
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const usePosition = (watch = false, settings = defaultSettings) => {
|
|
10
|
+
const [position, setPosition] = useState({})
|
|
11
|
+
const [error, setError] = useState(null)
|
|
12
|
+
|
|
13
|
+
const onChange = ({ coords, timestamp }) => {
|
|
14
|
+
setPosition({
|
|
15
|
+
latitude: coords.latitude,
|
|
16
|
+
longitude: coords.longitude,
|
|
17
|
+
accuracy: coords.accuracy,
|
|
18
|
+
speed: coords.speed,
|
|
19
|
+
timestamp
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const onError = () => {
|
|
24
|
+
setError(error?.message)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (!navigator || !navigator.geolocation) {
|
|
29
|
+
setError('Geolocation is not supported')
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let watcher = null
|
|
34
|
+
if (watch) {
|
|
35
|
+
watcher = navigator.geolocation.watchPosition(
|
|
36
|
+
onChange,
|
|
37
|
+
onError,
|
|
38
|
+
settings
|
|
39
|
+
)
|
|
40
|
+
} else {
|
|
41
|
+
navigator.geolocation.getCurrentPosition(onChange, onError, settings)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return () => { return watcher && navigator.geolocation.clearWatch(watcher) }
|
|
45
|
+
}, [
|
|
46
|
+
settings,
|
|
47
|
+
settings.enableHighAccuracy,
|
|
48
|
+
settings.timeout,
|
|
49
|
+
settings.maximumAge,
|
|
50
|
+
watch
|
|
51
|
+
])
|
|
52
|
+
|
|
53
|
+
return { ...position, error }
|
|
54
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { gql, useMutation } from '@apollo/client'
|
|
2
|
+
|
|
3
|
+
const LOGIN_EMPLOYEE_IN_STORE = gql`
|
|
4
|
+
mutation loginEmployeeInStore($eId: ID, $tenantId: String, $idStore: ID, $idUser: ID, $eEmail: String) {
|
|
5
|
+
loginEmployeeInStore(eId: $eId, tenantId: $tenantId, idStore: $idStore, idUser: $idUser, eEmail: $eEmail) {
|
|
6
|
+
success
|
|
7
|
+
message
|
|
8
|
+
token
|
|
9
|
+
idStore
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`
|
|
13
|
+
|
|
14
|
+
export const useLoginEmployeeInStore = () => {
|
|
15
|
+
const [loginEmployeeInStore, { data, loading, error }] = useMutation(LOGIN_EMPLOYEE_IN_STORE)
|
|
16
|
+
|
|
17
|
+
const loginEmployee = async (idStore: string, eEmail: string) => {
|
|
18
|
+
try {
|
|
19
|
+
const response = await loginEmployeeInStore({
|
|
20
|
+
variables: {
|
|
21
|
+
idStore,
|
|
22
|
+
eEmail
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
return response.data.loginEmployeeInStore
|
|
26
|
+
} catch (err) {
|
|
27
|
+
console.error('Error during loginEmployeeInStore mutation:', err)
|
|
28
|
+
throw err
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
loginEmployee,
|
|
34
|
+
data,
|
|
35
|
+
loading,
|
|
36
|
+
error
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Broadcast message shape
|
|
3
|
+
*/
|
|
4
|
+
export interface BroadcastMessage {
|
|
5
|
+
event?: string
|
|
6
|
+
data?: unknown
|
|
7
|
+
[key: string]: unknown
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Receive callback type
|
|
12
|
+
*/
|
|
13
|
+
export type BroadcastReceiver = (message: BroadcastMessage) => void
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* BroadcastChannel utility based on localStorage events.
|
|
17
|
+
* Keeps original behavior intact.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} name - Channel name
|
|
20
|
+
* @returns {{
|
|
21
|
+
* receive: (onReceive: BroadcastReceiver) => () => void
|
|
22
|
+
* post: (message: BroadcastMessage) => void
|
|
23
|
+
* }}
|
|
24
|
+
*/
|
|
25
|
+
function BroadcastChannel(name: string = 'nextauth.message') {
|
|
26
|
+
return {
|
|
27
|
+
/**
|
|
28
|
+
* Listen for broadcast messages
|
|
29
|
+
* @param onReceive
|
|
30
|
+
*/
|
|
31
|
+
receive: function (onReceive: BroadcastReceiver): () => void {
|
|
32
|
+
const handler = function (event: StorageEvent): void {
|
|
33
|
+
if (event.key !== name) return
|
|
34
|
+
|
|
35
|
+
const message: BroadcastMessage = JSON.parse(
|
|
36
|
+
event.newValue ?? '{}'
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
if (message?.event !== 'session' || !message?.data) return
|
|
40
|
+
|
|
41
|
+
onReceive(message)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
window.addEventListener('storage', handler)
|
|
45
|
+
|
|
46
|
+
return function (): void {
|
|
47
|
+
window.removeEventListener('storage', handler)
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Post a broadcast message
|
|
53
|
+
* @param message
|
|
54
|
+
*/
|
|
55
|
+
post: function (message: BroadcastMessage): void {
|
|
56
|
+
if (typeof window === 'undefined') return
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
localStorage.setItem(
|
|
60
|
+
name,
|
|
61
|
+
JSON.stringify({
|
|
62
|
+
...message,
|
|
63
|
+
timestamp: Date.now()
|
|
64
|
+
})
|
|
65
|
+
)
|
|
66
|
+
} catch {
|
|
67
|
+
// localStorage may be unavailable (private mode, Safari < 11, etc.)
|
|
68
|
+
// Messages are silently dropped to preserve original behavior.
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { BroadcastChannel }
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param __NEXTAUTH
|
|
4
|
+
*/
|
|
5
|
+
export function apiBaseUrl (__NEXTAUTH) {
|
|
6
|
+
if (typeof window === 'undefined') {
|
|
7
|
+
// Return absolute path when called server side
|
|
8
|
+
return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`
|
|
9
|
+
}
|
|
10
|
+
// Return relative path when called client side
|
|
11
|
+
return __NEXTAUTH.basePath
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { apiBaseUrl } from './apiBaseUrl'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param path
|
|
6
|
+
* @param __NEXTAUTH
|
|
7
|
+
* @param logger
|
|
8
|
+
* @param root0
|
|
9
|
+
* @param root0.ctx
|
|
10
|
+
* @param root0.req
|
|
11
|
+
*/
|
|
12
|
+
async function fetchData (path, __NEXTAUTH, logger, { ctx, req } = {}) {
|
|
13
|
+
const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`
|
|
14
|
+
try {
|
|
15
|
+
const options = {
|
|
16
|
+
headers: {
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
...(req?.headers?.cookie ? { cookie: req.headers.cookie } : {})
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (req?.body) {
|
|
23
|
+
options.body = JSON.stringify(req.body)
|
|
24
|
+
options.method = 'POST'
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const res = await fetch(url, options)
|
|
28
|
+
const data = await res.json()
|
|
29
|
+
if (!res.ok) throw data
|
|
30
|
+
return Object.keys(data).length > 0 ? data : null // Return null if data is empty
|
|
31
|
+
} catch (error) {
|
|
32
|
+
logger.error('CLIENT_FETCH_ERROR', { error, url })
|
|
33
|
+
return null
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { fetchData }
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { fetchData } from './fetchData'
|
|
2
|
+
import _logger, { proxyLogger } from './logger'
|
|
3
|
+
import { parseUrl } from './parseUrl'
|
|
4
|
+
|
|
5
|
+
const __NEXTAUTH = {
|
|
6
|
+
baseUrl: parseUrl(process.env.NEXTAUTH_URL || process.env.VERCEL_URL).origin,
|
|
7
|
+
basePath: parseUrl(process.env.NEXTAUTH_URL).path,
|
|
8
|
+
baseUrlServer: parseUrl(
|
|
9
|
+
process.env.NEXTAUTH_URL_INTERNAL ||
|
|
10
|
+
process.env.NEXTAUTH_URL ||
|
|
11
|
+
process.env.VERCEL_URL
|
|
12
|
+
).origin,
|
|
13
|
+
basePathServer: parseUrl(
|
|
14
|
+
process.env.NEXTAUTH_URL_INTERNAL || process.env.NEXTAUTH_URL
|
|
15
|
+
).path,
|
|
16
|
+
_lastSync: 0,
|
|
17
|
+
_session: undefined,
|
|
18
|
+
_getSession: () => {}
|
|
19
|
+
}
|
|
20
|
+
const logger = proxyLogger(_logger, __NEXTAUTH.basePath)
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param params
|
|
25
|
+
* @param params.callbackUrl
|
|
26
|
+
*/
|
|
27
|
+
export async function getCsrfToken (params: {
|
|
28
|
+
callbackUrl?: string
|
|
29
|
+
} = {}): Promise<string | undefined> {
|
|
30
|
+
const response = await fetchData(
|
|
31
|
+
'csrf',
|
|
32
|
+
__NEXTAUTH,
|
|
33
|
+
logger,
|
|
34
|
+
params
|
|
35
|
+
)
|
|
36
|
+
return response?.csrfToken
|
|
37
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { apiBaseUrl } from './apiBaseUrl'
|
|
2
|
+
import { BroadcastChannel } from './BroadcastChannel'
|
|
3
|
+
import { getCsrfToken } from './getCsrfToken'
|
|
4
|
+
import { parseUrl } from './parseUrl'
|
|
5
|
+
|
|
6
|
+
const broadcast = BroadcastChannel()
|
|
7
|
+
|
|
8
|
+
export const __NEXTAUTH = {
|
|
9
|
+
baseUrl: parseUrl(process.env.NEXTAUTH_URL || process.env.VERCEL_URL).origin,
|
|
10
|
+
basePath: parseUrl(process.env.NEXTAUTH_URL).path,
|
|
11
|
+
baseUrlServer: parseUrl(
|
|
12
|
+
process.env.NEXTAUTH_URL_INTERNAL ||
|
|
13
|
+
process.env.NEXTAUTH_URL ||
|
|
14
|
+
process.env.VERCEL_URL
|
|
15
|
+
).origin,
|
|
16
|
+
basePathServer: parseUrl(
|
|
17
|
+
process.env.NEXTAUTH_URL_INTERNAL || process.env.NEXTAUTH_URL
|
|
18
|
+
).path,
|
|
19
|
+
_lastSync: 0,
|
|
20
|
+
_session: undefined,
|
|
21
|
+
_getSession: ({ ...args }) => { }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param options
|
|
27
|
+
*/
|
|
28
|
+
export async function signOutAuth(options: {
|
|
29
|
+
callbackUrl?: string
|
|
30
|
+
redirect?: boolean
|
|
31
|
+
reload?: boolean
|
|
32
|
+
} | undefined = undefined
|
|
33
|
+
): Promise<{ url: string } | void> {
|
|
34
|
+
const { callbackUrl = window.location.href, reload = true } = options ?? {}
|
|
35
|
+
const baseUrl = apiBaseUrl(__NEXTAUTH)
|
|
36
|
+
const fetchOptions = {
|
|
37
|
+
method: 'post',
|
|
38
|
+
headers: {
|
|
39
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
40
|
+
},
|
|
41
|
+
// @ts-expect-error
|
|
42
|
+
body: new URLSearchParams({
|
|
43
|
+
csrfToken: await getCsrfToken(),
|
|
44
|
+
callbackUrl,
|
|
45
|
+
json: true
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
const res = await fetch(`${baseUrl}/signout`, fetchOptions)
|
|
49
|
+
const data = await res.json()
|
|
50
|
+
|
|
51
|
+
broadcast.post({ event: 'session', data: { trigger: 'signout' } })
|
|
52
|
+
if (!reload) {
|
|
53
|
+
await __NEXTAUTH._getSession({ event: 'storage' })
|
|
54
|
+
return data
|
|
55
|
+
}
|
|
56
|
+
if (options?.redirect ?? true) {
|
|
57
|
+
const url = data.url ?? callbackUrl
|
|
58
|
+
window.location.href = url
|
|
59
|
+
// If url contains a hash, the browser does not reload the page. We reload manually
|
|
60
|
+
if (url.includes('#') && !reload) window.location.reload()
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
await __NEXTAUTH._getSession({ event: 'storage' })
|
|
64
|
+
return data
|
|
65
|
+
}
|
|
@@ -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
|
+
|
|
7
|
+
import { signOutAuth } from './helpers'
|
|
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
|
+
}
|