@chipi-stack/chipi-react
Version:
React hooks and components for Chipi SDK
330 lines (326 loc) • 10.8 kB
JavaScript
;
var reactQuery = require('@tanstack/react-query');
var react = require('react');
require('@chipi-stack/backend');
require('react/jsx-runtime');
// src/hooks/useCreateWallet.ts
var ChipiContext = react.createContext(null);
function useChipiContext() {
const context = react.useContext(ChipiContext);
if (!context) {
throw new Error("useChipiContext must be used within a ChipiProvider");
}
return context;
}
// src/hooks/useCreateWallet.ts
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.useApprove = useApprove;
exports.useCallAnyContract = useCallAnyContract;
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=hooks.js.map
//# sourceMappingURL=hooks.js.map