@kimafinance/kima-transaction-widget 1.0.8 → 1.1.0

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.
@@ -1054,8 +1054,12 @@ function useNetworkOptions() {
1054
1054
  useEffect(() => {
1055
1055
  if (!nodeProviderQuery) return;
1056
1056
  (async function () {
1057
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getChains`);
1058
- setOptions(networkOptions.filter(network => networks.Chains.findIndex(id => id === network.id) >= 0));
1057
+ try {
1058
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getChains`);
1059
+ setOptions(networkOptions.filter(network => networks.Chains.findIndex(id => id === network.id) >= 0));
1060
+ } catch (e) {
1061
+ console.log('rpc disconnected', e);
1062
+ }
1059
1063
  })();
1060
1064
  }, [nodeProviderQuery]);
1061
1065
  return useMemo(() => ({
@@ -1091,18 +1095,26 @@ const Network = ({
1091
1095
  useEffect(() => {
1092
1096
  if (!nodeProviderQuery || mode !== ModeOptions.bridge) return;
1093
1097
  (async function () {
1094
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
1095
- setAvailableNetworks(networks.Chains);
1096
- if (_isOriginChain) {
1097
- dispatch(setTargetNetwork(networks.Chains[0]));
1098
+ try {
1099
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
1100
+ setAvailableNetworks(networks.Chains);
1101
+ if (_isOriginChain) {
1102
+ dispatch(setTargetNetwork(networks.Chains[0]));
1103
+ }
1104
+ } catch (e) {
1105
+ console.log('rpc disconnected', e);
1098
1106
  }
1099
1107
  })();
1100
1108
  }, [nodeProviderQuery, originNetwork, mode, _isOriginChain]);
1101
1109
  useEffect(() => {
1102
1110
  if (!nodeProviderQuery || mode !== ModeOptions.payment) return;
1103
1111
  (async function () {
1104
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
1105
- setAvailableNetworks(networks.Chains);
1112
+ try {
1113
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
1114
+ setAvailableNetworks(networks.Chains);
1115
+ } catch (e) {
1116
+ console.log('rpc disconnected', e);
1117
+ }
1106
1118
  })();
1107
1119
  }, [nodeProviderQuery, mode]);
1108
1120
  useEffect(() => {
@@ -1884,18 +1896,26 @@ const NetworkDropdown = ({
1884
1896
  useEffect(() => {
1885
1897
  if (!nodeProviderQuery || mode !== ModeOptions.bridge) return;
1886
1898
  (async function () {
1887
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
1888
- setAvailableNetworks(networks.Chains);
1889
- if (_isOriginChain) {
1890
- dispatch(setTargetNetwork(networks.Chains[0]));
1899
+ try {
1900
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${originNetwork}`);
1901
+ setAvailableNetworks(networks.Chains);
1902
+ if (_isOriginChain) {
1903
+ dispatch(setTargetNetwork(networks.Chains[0]));
1904
+ }
1905
+ } catch (e) {
1906
+ console.log('rpc disconnected', e);
1891
1907
  }
1892
1908
  })();
1893
1909
  }, [nodeProviderQuery, originNetwork, mode, _isOriginChain]);
1894
1910
  useEffect(() => {
1895
1911
  if (!nodeProviderQuery || mode !== ModeOptions.payment) return;
1896
1912
  (async function () {
1897
- const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
1898
- setAvailableNetworks(networks.Chains);
1913
+ try {
1914
+ const networks = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${targetNetwork}`);
1915
+ setAvailableNetworks(networks.Chains);
1916
+ } catch (e) {
1917
+ console.log('rpc disconnected', e);
1918
+ }
1899
1919
  })();
1900
1920
  }, [nodeProviderQuery, mode]);
1901
1921
  return React.createElement("div", {
@@ -2191,57 +2211,61 @@ const TransactionWidget = ({
2191
2211
  useEffect(() => {
2192
2212
  if (!nodeProviderQuery || txId < 0) return;
2193
2213
  const timerId = setInterval(async () => {
2194
- const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/transaction_data/${txId}`);
2195
- const data = result === null || result === void 0 ? void 0 : result.transactionData;
2196
- if (!data) return;
2197
- const status = data.status;
2198
- console.log(status);
2199
- setData({
2200
- sourceChain: data.originChain,
2201
- targetChain: data.targetChain,
2202
- tssPullHash: data.tssPullHash,
2203
- tssReleaseHash: data.tssReleaseHash,
2204
- amount: +data.amount,
2205
- symbol: data.symbol,
2206
- kimaTxHash: data.kimaTxHash
2207
- });
2208
- setErrorStep(-1);
2209
- if (status === TransactionStatus.AVAILABLE) {
2210
- setStep(1);
2211
- setPercent(25);
2212
- setLoadingStep(1);
2213
- } else if (status === TransactionStatus.CONFIRMED) {
2214
- setStep(2);
2215
- setPercent(50);
2216
- setLoadingStep(2);
2217
- } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {
2218
- setStep(1);
2219
- setPercent(25);
2220
- setErrorStep(1);
2221
- setLoadingStep(-1);
2222
- } else if (status === TransactionStatus.KEYSIGNED) {
2223
- setStep(3);
2224
- setPercent(75);
2225
- setLoadingStep(3);
2226
- } else if (status === TransactionStatus.PAID) {
2227
- setStep(3);
2228
- setPercent(90);
2229
- setLoadingStep(3);
2230
- } else if (status === TransactionStatus.FAILED) {
2231
- setStep(3);
2232
- setPercent(90);
2233
- setErrorStep(3);
2234
- setLoadingStep(-1);
2235
- } else if (status === TransactionStatus.COMPLETED) {
2236
- setStep(4);
2237
- setPercent(100);
2238
- clearInterval(timerId);
2239
- setLoadingStep(-1);
2240
- setTimeout(() => {
2241
- successHandler({
2242
- txId
2243
- });
2244
- }, 3000);
2214
+ try {
2215
+ const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/transaction_data/${txId}`);
2216
+ const data = result === null || result === void 0 ? void 0 : result.transactionData;
2217
+ if (!data) return;
2218
+ const status = data.status;
2219
+ console.log(status);
2220
+ setData({
2221
+ sourceChain: data.originChain,
2222
+ targetChain: data.targetChain,
2223
+ tssPullHash: data.tssPullHash,
2224
+ tssReleaseHash: data.tssReleaseHash,
2225
+ amount: +data.amount,
2226
+ symbol: data.symbol,
2227
+ kimaTxHash: data.kimaTxHash
2228
+ });
2229
+ setErrorStep(-1);
2230
+ if (status === TransactionStatus.AVAILABLE) {
2231
+ setStep(1);
2232
+ setPercent(25);
2233
+ setLoadingStep(1);
2234
+ } else if (status === TransactionStatus.CONFIRMED) {
2235
+ setStep(2);
2236
+ setPercent(50);
2237
+ setLoadingStep(2);
2238
+ } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {
2239
+ setStep(1);
2240
+ setPercent(25);
2241
+ setErrorStep(1);
2242
+ setLoadingStep(-1);
2243
+ } else if (status === TransactionStatus.KEYSIGNED) {
2244
+ setStep(3);
2245
+ setPercent(75);
2246
+ setLoadingStep(3);
2247
+ } else if (status === TransactionStatus.PAID) {
2248
+ setStep(3);
2249
+ setPercent(90);
2250
+ setLoadingStep(3);
2251
+ } else if (status === TransactionStatus.FAILED) {
2252
+ setStep(3);
2253
+ setPercent(90);
2254
+ setErrorStep(3);
2255
+ setLoadingStep(-1);
2256
+ } else if (status === TransactionStatus.COMPLETED) {
2257
+ setStep(4);
2258
+ setPercent(100);
2259
+ clearInterval(timerId);
2260
+ setLoadingStep(-1);
2261
+ setTimeout(() => {
2262
+ successHandler({
2263
+ txId
2264
+ });
2265
+ }, 3000);
2266
+ }
2267
+ } catch (e) {
2268
+ console.log('rpc disconnected', e);
2245
2269
  }
2246
2270
  }, 1000);
2247
2271
  return () => {
@@ -6204,17 +6228,27 @@ function useAllowance() {
6204
6228
  }, [selectedCoin, sourceChain]);
6205
6229
  const [targetAddress, setTargetAddress] = useState();
6206
6230
  const isApproved = useMemo(() => {
6207
- if (!isEVMChain(sourceChain)) return splAllowance >= amount + serviceFee;
6231
+ if (!isEVMChain(sourceChain)) {
6232
+ return allowance >= amount + serviceFee;
6233
+ }
6208
6234
  if (allowance && amount && allowance.gte(parseUnits((amount + serviceFee).toString(), decimals))) return true;
6209
6235
  return false;
6210
6236
  }, [decimals, sourceChain, allowance, amount, splAllowance, serviceFee]);
6211
6237
  const updatePoolAddress = async () => {
6212
- var _result$tssPubkey;
6213
- const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/tss_pubkey`);
6214
- if ((result === null || result === void 0 ? void 0 : (_result$tssPubkey = result.tssPubkey) === null || _result$tssPubkey === void 0 ? void 0 : _result$tssPubkey.length) < 1) {
6215
- return;
6238
+ try {
6239
+ var _result$tssPubkey;
6240
+ if (sourceChain === ChainName.SOLANA) {
6241
+ setTargetAddress('8ymXJ6RH9k8qSf1xsvxSWgzPB9RYgUuHPDgonkFzUEhT');
6242
+ return;
6243
+ }
6244
+ const result = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/tss_pubkey`);
6245
+ if ((result === null || result === void 0 ? void 0 : (_result$tssPubkey = result.tssPubkey) === null || _result$tssPubkey === void 0 ? void 0 : _result$tssPubkey.length) < 1) {
6246
+ return;
6247
+ }
6248
+ setTargetAddress(sourceChain === ChainName.SOLANA ? result.tssPubkey[0].ebdsa : result.tssPubkey[0].ecdsa);
6249
+ } catch (e) {
6250
+ console.log('rpc disconnected', e);
6216
6251
  }
6217
- setTargetAddress(sourceChain === ChainName.SOLANA ? result.tssPubkey[0].ebdsa : result.tssPubkey[0].ecdsa);
6218
6252
  };
6219
6253
  useEffect(() => {
6220
6254
  if (!nodeProviderQuery) return;
@@ -6223,7 +6257,20 @@ function useAllowance() {
6223
6257
  useEffect(() => {
6224
6258
  (async () => {
6225
6259
  try {
6226
- if (!isEVMChain(sourceChain) || !tokenAddress || !targetAddress || !signer || !signerAddress) return;
6260
+ if (!isEVMChain(sourceChain) && publicKey && tokenAddress && connection) {
6261
+ var _accountInfo$value, _parsedAccountInfo$pa, _parsedAccountInfo$pa2, _parsedAccountInfo$pa3, _parsedAccountInfo$pa4, _parsedAccountInfo$pa5;
6262
+ const mint = new PublicKey(tokenAddress);
6263
+ console.log(mint, publicKey, tokenAddress);
6264
+ const fromTokenAccount = await getOrCreateAssociatedTokenAccount(connection, publicKey, mint, publicKey, signTransaction);
6265
+ console.log(fromTokenAccount);
6266
+ const accountInfo = await connection.getParsedAccountInfo(fromTokenAccount.address);
6267
+ console.log(accountInfo);
6268
+ setDecimals(COIN_LIST['USDK'].decimals);
6269
+ const parsedAccountInfo = accountInfo === null || accountInfo === void 0 ? void 0 : (_accountInfo$value = accountInfo.value) === null || _accountInfo$value === void 0 ? void 0 : _accountInfo$value.data;
6270
+ setAllowance(((_parsedAccountInfo$pa = parsedAccountInfo.parsed) === null || _parsedAccountInfo$pa === void 0 ? void 0 : (_parsedAccountInfo$pa2 = _parsedAccountInfo$pa.info) === null || _parsedAccountInfo$pa2 === void 0 ? void 0 : _parsedAccountInfo$pa2.delegate) === targetAddress ? (_parsedAccountInfo$pa3 = parsedAccountInfo.parsed) === null || _parsedAccountInfo$pa3 === void 0 ? void 0 : (_parsedAccountInfo$pa4 = _parsedAccountInfo$pa3.info) === null || _parsedAccountInfo$pa4 === void 0 ? void 0 : (_parsedAccountInfo$pa5 = _parsedAccountInfo$pa4.delegatedAmount) === null || _parsedAccountInfo$pa5 === void 0 ? void 0 : _parsedAccountInfo$pa5.uiAmount : 0);
6271
+ return;
6272
+ }
6273
+ if (!tokenAddress || !targetAddress || !signer || !signerAddress) return;
6227
6274
  const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer);
6228
6275
  const decimals = await erc20Contract.decimals();
6229
6276
  const userAllowance = await erc20Contract.allowance(signerAddress, targetAddress);
@@ -6233,7 +6280,7 @@ function useAllowance() {
6233
6280
  errorHandler(error);
6234
6281
  }
6235
6282
  })();
6236
- }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain]);
6283
+ }, [signerAddress, tokenAddress, targetAddress, isApproving, sourceChain, publicKey]);
6237
6284
  const approve = useCallback(async () => {
6238
6285
  if (isEVMChain(sourceChain)) {
6239
6286
  if (!decimals || !tokenAddress || !signer || !targetAddress) return;
@@ -6294,7 +6341,7 @@ async function getFeeInUSD(sourceChain, targetChain, gasFee) {
6294
6341
  if (targetChain === ChainName.SOLANA) {
6295
6342
  targetFee = +gasFee[targetChain] * +targetTokenPrice;
6296
6343
  } else targetFee = gasFee[targetChain] ? +gasFee[targetChain] * max_gas * +targetTokenPrice / 1e9 : 0;
6297
- return [sourceFee, targetFee];
6344
+ return [isNaN(sourceFee) ? 0 : sourceFee, isNaN(targetFee) ? 0 : targetFee];
6298
6345
  }
6299
6346
  function useServiceFee() {
6300
6347
  const {
@@ -6323,10 +6370,11 @@ function useServiceFee() {
6323
6370
  });
6324
6371
  const estimation = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/estimate_transfer/${sourceChain}/${walletAddress}/${targetChain}/${targetAddress}/${amount}`);
6325
6372
  const [originFee, targetFee] = await getFeeInUSD(sourceChain, targetChain, gasFee);
6326
- const fee = parseFloat(estimation.estimateTransfer.TakerPenalty) + parseFloat(estimation.estimateTransfer.MakerPenalty) - parseFloat(estimation.estimateTransfer.TakerBounty) - parseFloat(estimation.estimateTransfer.MakerBounty) + parseFloat(estimation.estimateTransfer.NetworkFee) + originFee + targetFee;
6373
+ let fee = parseFloat(estimation.estimateTransfer.TakerPenalty) + parseFloat(estimation.estimateTransfer.MakerPenalty) - parseFloat(estimation.estimateTransfer.TakerBounty) - parseFloat(estimation.estimateTransfer.MakerBounty) + parseFloat(estimation.estimateTransfer.NetworkFee) + originFee + targetFee;
6374
+ fee = fee < 0 ? 0 : fee;
6327
6375
  setServiceFee(parseFloat(fee.toFixed(2)));
6328
6376
  } catch (e) {
6329
- console.log(e);
6377
+ console.log('rpc disconnected', e);
6330
6378
  }
6331
6379
  };
6332
6380
  useEffect(() => {
@@ -6334,7 +6382,7 @@ function useServiceFee() {
6334
6382
  getServiceFee();
6335
6383
  const timerId = setInterval(() => {
6336
6384
  getServiceFee();
6337
- }, 5 * 1000);
6385
+ }, 20 * 1000);
6338
6386
  return () => {
6339
6387
  clearInterval(timerId);
6340
6388
  };
@@ -6361,9 +6409,13 @@ function useCurrencyOptions() {
6361
6409
  useEffect(() => {
6362
6410
  if (!nodeProviderQuery || !originNetwork || !targetNetwork) return;
6363
6411
  (async function () {
6364
- var _coins$Currencies;
6365
- const coins = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getCurrencies/${originNetwork}/${targetNetwork}`);
6366
- setOptions(COIN_LIST[(_coins$Currencies = coins.Currencies) !== null && _coins$Currencies !== void 0 && _coins$Currencies.length ? coins.Currencies[0] : 'USDK']);
6412
+ try {
6413
+ var _coins$Currencies;
6414
+ const coins = await fetchWrapper.get(`${nodeProviderQuery}/kima-finance/kima/kima/getCurrencies/${originNetwork}/${targetNetwork}`);
6415
+ setOptions(COIN_LIST[(_coins$Currencies = coins.Currencies) !== null && _coins$Currencies !== void 0 && _coins$Currencies.length ? coins.Currencies[0] : 'USDK']);
6416
+ } catch (e) {
6417
+ console.log('rpc disconnected', e);
6418
+ }
6367
6419
  })();
6368
6420
  }, [nodeProviderQuery, originNetwork, targetNetwork]);
6369
6421
  return useMemo(() => ({
@@ -6458,6 +6510,7 @@ const TransferWidget = ({
6458
6510
  } catch (e) {
6459
6511
  errorHandler(e);
6460
6512
  dispatch(setSubmitting(false));
6513
+ console.log('rpc disconnected', e);
6461
6514
  }
6462
6515
  };
6463
6516
  const onNext = () => {
@@ -6595,8 +6648,12 @@ const KimaTransactionWidget = ({
6595
6648
  if (mode === ModeOptions.payment) {
6596
6649
  dispatch(setTargetNetwork((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM));
6597
6650
  (async function () {
6598
- const networks = await fetchWrapper.get(`${kimaNodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${(transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM}`);
6599
- dispatch(setOriginNetwork(networks.Chains[0]));
6651
+ try {
6652
+ const networks = await fetchWrapper.get(`${kimaNodeProviderQuery}/kima-finance/kima/kima/get_available_chains/${(transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetChain) || ChainName.ETHEREUM}`);
6653
+ dispatch(setOriginNetwork(networks.Chains[0]));
6654
+ } catch (e) {
6655
+ console.log('rpc disconnected', e);
6656
+ }
6600
6657
  })();
6601
6658
  dispatch(setTargetAddress((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.targetAddress) || ''));
6602
6659
  dispatch(setAmount((transactionOption === null || transactionOption === void 0 ? void 0 : transactionOption.amount) || 0));