UNPKG

@reservoir0x/relay-kit-hooks

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

94 lines 3.03 kB
"use strict"; 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