@reservoir0x/relay-kit-hooks
Version:
Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.
94 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryQuote = void 0;
const relay_sdk_1 = require("@reservoir0x/relay-sdk");
const fetcher_js_1 = require("../fetcher.js");
const react_query_1 = require("@tanstack/react-query");
const react_1 = require("react");
const queryQuote = function (baseApiUrl = relay_sdk_1.MAINNET_RELAY_API, options, config) {
return new Promise((resolve, reject) => {
const url = new URL(`${baseApiUrl}/quote`);
(0, fetcher_js_1.axiosPostFetcher)(url.href, options, config)
.then((response) => {
const request = {
url: url.href,
method: 'post',
data: options
};
resolve({
...response,
request
});
})
.catch((e) => {
reject(e);
});
});
};
exports.queryQuote = queryQuote;
function default_1(client, wallet, options, onRequest, onResponse, queryOptions, onError, config) {
const queryKey = ['useQuote', options];
const response = react_query_1.useQuery({
queryKey: queryKey,
queryFn: () => {
onRequest?.(options, config);
if (options && client?.source && !options.referrer) {
options.referrer = client.source;
}
const promise = (0, exports.queryQuote)(client?.baseApiUrl, options, {
...config,
headers: {
'relay-sdk-version': client?.version ?? 'unknown',
'relay-kit-ui-version': client?.uiVersion ?? 'unknown'
}
});
promise
.then((response) => {
onResponse?.(response, options);
})
.catch((e) => {
if (onError) {
onError?.(e);
}
else {
throw e;
}
});
return promise;
},
enabled: client !== undefined && options !== undefined,
retry: false,
...queryOptions
});
const executeQuote = (0, react_1.useCallback)((onProgress) => {
if (!wallet) {
throw 'Missing a valid wallet';
}
if (!response.data) {
throw 'Missing a quote';
}
const promise = client?.actions?.execute({
wallet,
quote: response.data,
onProgress
});
return promise;
}, [response.data, wallet, client]);
return (0, react_1.useMemo)(() => ({
...response,
data: response.error ? undefined : response.data,
queryKey,
executeQuote
}), [
response.data,
response.error,
response.isLoading,
response.isFetching,
response.isRefetching,
response.dataUpdatedAt,
executeQuote,
queryKey
]);
}
exports.default = default_1;
//# sourceMappingURL=useQuote.js.map