UNPKG

@chipi-stack/chipi-react

Version:

React hooks and components for Chipi SDK

365 lines (360 loc) 12 kB
'use strict'; var React = require('react'); var reactQuery = require('@tanstack/react-query'); var backend = require('@chipi-stack/backend'); var jsxRuntime = require('react/jsx-runtime'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); // src/context/ChipiProvider.tsx var ChipiContext = React.createContext(null); var createDefaultQueryClient = () => new reactQuery.QueryClient({ defaultOptions: { queries: { staleTime: 60 * 1e3, // 1 minute gcTime: 10 * 60 * 1e3, // 10 minutes (formerly cacheTime) retry: (failureCount, error) => { if (error?.status >= 400 && error?.status < 500) { return false; } return failureCount < 3; } }, mutations: { retry: false } } }); function ChipiProvider({ children, config }) { const queryClient = React__default.default.useMemo(() => createDefaultQueryClient(), []); const chipiSDK = React__default.default.useMemo(() => new backend.ChipiSDK(config), [config]); const value = React__default.default.useMemo( () => ({ chipiSDK, config }), [chipiSDK, config] ); return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(ChipiContext.Provider, { value, children }) }); } function useChipiContext() { const context = React.useContext(ChipiContext); if (!context) { throw new Error("useChipiContext must be used within a ChipiProvider"); } return context; } function useCreateWallet() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (input) => chipiSDK.createWallet({ params: input.params, bearerToken: input.bearerToken }) }); return { createWallet: mutation.mutate, createWalletAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useGetWallet(input) { const { chipiSDK } = useChipiContext(); const queryClient = reactQuery.useQueryClient(); const query = reactQuery.useQuery({ queryKey: ["wallet", input?.params?.externalUserId], queryFn: async () => { if (!input || !input.params || !input.getBearerToken) throw new Error("Input is required"); const bearerToken = await input.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.getWallet(input.params, bearerToken); }, enabled: Boolean( input?.params?.externalUserId && input?.getBearerToken && input.params.externalUserId.trim() !== "" ), ...input?.queryOptions }); const fetchWallet = async (newInput) => { return queryClient.fetchQuery({ queryKey: ["wallet", newInput?.params?.externalUserId], queryFn: async () => { if (!newInput || !newInput.getBearerToken || !newInput.params) throw new Error("Input is required"); const bearerToken = await newInput.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.getWallet(newInput.params, bearerToken); } }); }; return { ...query, fetchWallet }; } function useTransfer() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation( { mutationFn: (input) => chipiSDK.transfer({ params: { ...input.params, amount: String(input.params.amount) }, bearerToken: input.bearerToken }) } ); return { transfer: mutation.mutate, transferAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useApprove() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (params) => chipiSDK.approve({ params: { ...params.params, amount: String(params.params.amount) }, bearerToken: params.bearerToken }) }); return { approve: mutation.mutate, approveAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useCreateSkuTransaction() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (input) => chipiSDK.createSkuTransaction({ params: input.params, bearerToken: input.bearerToken }) }); return { createSkuTransaction: mutation.mutate, createSkuTransactionAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useGetSkuTransactionById(input) { const { chipiSDK } = useChipiContext(); const queryClient = reactQuery.useQueryClient(); const query = reactQuery.useQuery({ queryKey: ["sku-transaction", input?.id], queryFn: async () => { if (!input?.id) throw new Error("id is required"); if (!input?.getBearerToken) throw new Error("getBearerToken is required"); const bearerToken = await input.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.skuTransactions.getSkuTransactionById(input.id, bearerToken); }, enabled: Boolean(input?.id && input?.getBearerToken), ...input?.queryOptions }); const fetchSkuTransactionById = async (newInput) => { return queryClient.fetchQuery({ queryKey: ["sku-transaction", newInput?.id], queryFn: async () => { if (!newInput?.id) throw new Error("id is required"); if (!newInput?.getBearerToken) throw new Error("getBearerToken is required"); const bearerToken = await newInput.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.skuTransactions.getSkuTransactionById(newInput.id, bearerToken); } }); }; return { ...query, fetchSkuTransactionById }; } function useGetSkus(input) { const { chipiSDK } = useChipiContext(); const queryClient = reactQuery.useQueryClient(); const buildQueryKey = (q) => [ "available-skus", q?.page ?? 1, q?.limit ?? 10, q?.offset ?? 0, q?.provider ?? null, q?.category ?? null ]; const query = reactQuery.useQuery({ queryKey: buildQueryKey(input?.query), queryFn: async () => { if (!input?.getBearerToken) throw new Error("getBearerToken is required"); const bearerToken = await input.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.skus.getSkus(bearerToken, input.query); }, enabled: Boolean(input?.getBearerToken), ...input?.queryOptions }); const fetchAvailableSkus = async (newInput) => { return queryClient.fetchQuery({ queryKey: buildQueryKey(newInput?.query), queryFn: async () => { if (!newInput?.getBearerToken) throw new Error("getBearerToken is required"); const bearerToken = await newInput.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.skus.getSkus(bearerToken, newInput.query); } }); }; return { ...query, fetchAvailableSkus }; } function useStakeVesuUsdc() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (params) => chipiSDK.stakeVesuUsdc({ params: { ...params.params, amount: String(params.params.amount) }, bearerToken: params.bearerToken }) }); return { stakeVesuUsdc: mutation.mutate, stakeVesuUsdcAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useWithdrawVesuUsdc() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (params) => chipiSDK.withdrawVesuUsdc({ params: { ...params.params, amount: String(params.params.amount) }, bearerToken: params.bearerToken }) }); return { withdrawVesuUsdc: mutation.mutate, withdrawVesuUsdcAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useCallAnyContract() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (params) => chipiSDK.callAnyContract(params) }); return { callAnyContract: mutation.mutate, callAnyContractAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useRecordSendTransaction() { const { chipiSDK } = useChipiContext(); const mutation = reactQuery.useMutation({ mutationFn: (input) => chipiSDK.recordSendTransaction({ params: input.params, bearerToken: input.bearerToken }) }); return { recordSendTransaction: mutation.mutate, recordSendTransactionAsync: mutation.mutateAsync, data: mutation.data, isLoading: mutation.isPending, isError: mutation.isError, error: mutation.error, isSuccess: mutation.isSuccess, reset: mutation.reset }; } function useGetTokenBalance(input) { const { chipiSDK } = useChipiContext(); const queryClient = reactQuery.useQueryClient(); const query = reactQuery.useQuery({ queryKey: ["chain-token-balance", input?.params?.chainToken, input?.params?.chain, input?.params?.walletPublicKey, input?.params?.externalUserId], queryFn: async () => { if (!input || !input.params || !input.getBearerToken) throw new Error("Input is required"); const bearerToken = await input.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.getTokenBalance(input.params, bearerToken); }, enabled: Boolean(input?.params && input?.getBearerToken), ...input?.queryOptions }); const fetchTokenBalance = async (newInput) => { return queryClient.fetchQuery({ queryKey: ["chain-token-balance", newInput?.params?.chainToken, newInput?.params?.chain, newInput?.params?.walletPublicKey, newInput?.params?.externalUserId], queryFn: async () => { if (!newInput || !newInput.getBearerToken || !newInput.params) throw new Error("Input is required"); const bearerToken = await newInput.getBearerToken(); if (!bearerToken) throw new Error("Bearer token is required"); return chipiSDK.getTokenBalance(newInput.params, bearerToken); } }); }; return { ...query, fetchTokenBalance }; } exports.ChipiProvider = ChipiProvider; exports.useApprove = useApprove; exports.useCallAnyContract = useCallAnyContract; exports.useChipiContext = useChipiContext; exports.useCreateSkuTransaction = useCreateSkuTransaction; exports.useCreateWallet = useCreateWallet; exports.useGetSkuTransactionById = useGetSkuTransactionById; exports.useGetSkus = useGetSkus; exports.useGetTokenBalance = useGetTokenBalance; exports.useGetWallet = useGetWallet; exports.useRecordSendTransaction = useRecordSendTransaction; exports.useStakeVesuUsdc = useStakeVesuUsdc; exports.useTransfer = useTransfer; exports.useWithdrawVesuUsdc = useWithdrawVesuUsdc; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map