@bze/bze-ui-kit 1.0.9 → 1.0.11

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.
package/dist/index.mjs CHANGED
@@ -3355,21 +3355,27 @@ var useSigningClient = ({ chainName }) => {
3355
3355
  const { getSigningClient, signingClientError, wallet, chain } = useChain(chainName != null ? chainName : getChainName());
3356
3356
  const [signingClient, setSigningClient] = useState(null);
3357
3357
  const [isSigningClientReady, setIsSigningClientReady] = useState(false);
3358
- const hasInitialized = useRef(false);
3358
+ const initializedForWallet = useRef(null);
3359
3359
  const createSigningClient = useCallback2(async () => {
3360
3360
  return getSigningClient();
3361
3361
  }, [getSigningClient]);
3362
3362
  useEffect(() => {
3363
- if (!wallet || !chain || hasInitialized.current) {
3363
+ if (!wallet || !chain) {
3364
+ if (initializedForWallet.current !== null) {
3365
+ setSigningClient(null);
3366
+ setIsSigningClientReady(false);
3367
+ initializedForWallet.current = null;
3368
+ }
3364
3369
  return;
3365
3370
  }
3371
+ if (initializedForWallet.current === wallet) return;
3366
3372
  const load = async () => {
3367
3373
  const client = await createSigningClient();
3368
3374
  if (client) {
3369
3375
  registerBzeEncoders(client);
3370
3376
  setSigningClient(client);
3371
3377
  setIsSigningClientReady(true);
3372
- hasInitialized.current = true;
3378
+ initializedForWallet.current = wallet;
3373
3379
  }
3374
3380
  };
3375
3381
  load();
@@ -3381,6 +3387,34 @@ var useSigningClient = ({ chainName }) => {
3381
3387
  };
3382
3388
  };
3383
3389
 
3390
+ // src/hooks/useWalletHealthCheck.ts
3391
+ import { useEffect as useEffect2 } from "react";
3392
+ import { useChain as useChain2 } from "@interchain-kit/react";
3393
+ import { WalletState } from "@interchain-kit/core";
3394
+ var SIGNING_CLIENT_TIMEOUT_MS = 5e3;
3395
+ var useWalletHealthCheck = (chainName) => {
3396
+ const { status, getSigningClient, disconnect } = useChain2(chainName != null ? chainName : getChainName());
3397
+ useEffect2(() => {
3398
+ if (status !== WalletState.Connected) return;
3399
+ const validate = async () => {
3400
+ try {
3401
+ const client = await Promise.race([
3402
+ getSigningClient(),
3403
+ new Promise(
3404
+ (resolve) => setTimeout(() => resolve(null), SIGNING_CLIENT_TIMEOUT_MS)
3405
+ )
3406
+ ]);
3407
+ if (!client) {
3408
+ disconnect();
3409
+ }
3410
+ } catch (e) {
3411
+ disconnect();
3412
+ }
3413
+ };
3414
+ validate();
3415
+ }, []);
3416
+ };
3417
+
3384
3418
  // src/hooks/usePrices.ts
3385
3419
  import { useCallback as useCallback3, useMemo as useMemo2 } from "react";
3386
3420
  function useAssetPrice(denom) {
@@ -3424,11 +3458,11 @@ function useAssetPrice(denom) {
3424
3458
  }
3425
3459
 
3426
3460
  // src/hooks/useSettings.ts
3427
- import { useState as useState2, useEffect as useEffect2, useCallback as useCallback4, useMemo as useMemo3 } from "react";
3461
+ import { useState as useState2, useEffect as useEffect3, useCallback as useCallback4, useMemo as useMemo3 } from "react";
3428
3462
  function useSettings() {
3429
3463
  const [settings, setSettingsState] = useState2(DEFAULT_SETTINGS);
3430
3464
  const [isLoaded, setIsLoaded] = useState2(false);
3431
- useEffect2(() => {
3465
+ useEffect3(() => {
3432
3466
  setSettingsState(getSettings());
3433
3467
  setIsLoaded(true);
3434
3468
  }, []);
@@ -4066,7 +4100,7 @@ var useToast = () => {
4066
4100
 
4067
4101
  // src/hooks/useTx.tsx
4068
4102
  import { TxBody, SignerInfo } from "@bze/bzejs/cosmos/tx/v1beta1/tx";
4069
- import { useChain as useChain2 } from "@interchain-kit/react";
4103
+ import { useChain as useChain3 } from "@interchain-kit/react";
4070
4104
  import BigNumber13 from "bignumber.js";
4071
4105
  import { useCallback as useCallback11, useMemo as useMemo11, useState as useState3 } from "react";
4072
4106
  var TxStatus = /* @__PURE__ */ ((TxStatus2) => {
@@ -4101,7 +4135,7 @@ var useIBCTx = (chainName) => {
4101
4135
  };
4102
4136
  };
4103
4137
  var useTx = (chainName) => {
4104
- const { address, disconnect } = useChain2(chainName);
4138
+ const { address, disconnect } = useChain3(chainName);
4105
4139
  const { toast } = useToast();
4106
4140
  const { signingClient, isSigningClientReady, signingClientError } = useSigningClient({ chainName });
4107
4141
  const [progressTrack, setProgressTrack] = useState3("");
@@ -4232,7 +4266,7 @@ var useTx = (chainName) => {
4232
4266
  };
4233
4267
 
4234
4268
  // src/hooks/useValidatorLogos.ts
4235
- import { useCallback as useCallback12, useEffect as useEffect3, useRef as useRef2, useState as useState4 } from "react";
4269
+ import { useCallback as useCallback12, useEffect as useEffect4, useRef as useRef2, useState as useState4 } from "react";
4236
4270
  var KEYBASE_API_URL = "https://keybase.io/_/api/1.0/user/lookup.json";
4237
4271
  var LOGOS_STORAGE_KEY = "validator_logos";
4238
4272
  var LOGOS_TTL = 24 * 60 * 60 * 1e3;
@@ -4304,7 +4338,7 @@ var useValidatorLogos = (validators) => {
4304
4338
  }
4305
4339
  return result;
4306
4340
  }, []);
4307
- useEffect3(() => {
4341
+ useEffect4(() => {
4308
4342
  if (!validators || validators.length === 0) return;
4309
4343
  if (fetchedRef.current && validatorCountRef.current === validators.length) return;
4310
4344
  const identities = validators.map((v) => {
@@ -4328,7 +4362,7 @@ var useValidatorLogos = (validators) => {
4328
4362
 
4329
4363
  // src/components/highlight.tsx
4330
4364
  import { Text } from "@chakra-ui/react";
4331
- import { useEffect as useEffect4, useRef as useRef3, useState as useState5 } from "react";
4365
+ import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
4332
4366
  import { jsx as jsx2 } from "react/jsx-runtime";
4333
4367
  var HighlightText = (_a2) => {
4334
4368
  var _b2 = _a2, {
@@ -4351,7 +4385,7 @@ var HighlightText = (_a2) => {
4351
4385
  const previousValueRef = useRef3(childrenString);
4352
4386
  const highlightOpacity = highlightIntensity === "subtle" ? "15" : "50";
4353
4387
  const boxShadowStrength = highlightIntensity === "subtle" ? "10" : "25";
4354
- useEffect4(() => {
4388
+ useEffect5(() => {
4355
4389
  if (!isMountedRef.current) {
4356
4390
  isMountedRef.current = true;
4357
4391
  if (highlightOnMount) {
@@ -4524,7 +4558,7 @@ import {
4524
4558
  } from "@chakra-ui/react";
4525
4559
  import { Select, Portal as Portal3 } from "@chakra-ui/react";
4526
4560
  import { useTheme } from "next-themes";
4527
- import { useState as useState7, useEffect as useEffect5, useMemo as useMemo12, useCallback as useCallback13 } from "react";
4561
+ import { useState as useState7, useEffect as useEffect6, useMemo as useMemo12, useCallback as useCallback13 } from "react";
4528
4562
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
4529
4563
  var SettingsSidebarContent = ({ accentColor = "blue" }) => {
4530
4564
  const { setTheme, resolvedTheme } = useTheme();
@@ -4537,7 +4571,7 @@ var SettingsSidebarContent = ({ accentColor = "blue" }) => {
4537
4571
  const [isValidating, setIsValidating] = useState7(false);
4538
4572
  const [validationResults, setValidationResults] = useState7({});
4539
4573
  const [preferredFeeDenom, setPreferredFeeDenom] = useState7(void 0);
4540
- useEffect5(() => {
4574
+ useEffect6(() => {
4541
4575
  if (isLoaded) {
4542
4576
  setRestEndpoint(settings.endpoints.restEndpoint);
4543
4577
  setRpcEndpoint(settings.endpoints.rpcEndpoint);
@@ -4774,7 +4808,7 @@ var SettingsSidebarContent = ({ accentColor = "blue" }) => {
4774
4808
 
4775
4809
  // src/components/sidebar/wallet-sidebar.tsx
4776
4810
  import "@interchain-kit/react/styles.css";
4777
- import { InterchainWalletModal, useChain as useChain3 } from "@interchain-kit/react";
4811
+ import { InterchainWalletModal, useChain as useChain4 } from "@interchain-kit/react";
4778
4812
  import {
4779
4813
  Badge as Badge2,
4780
4814
  Box as Box2,
@@ -4793,8 +4827,8 @@ import {
4793
4827
  VStack as VStack2
4794
4828
  } from "@chakra-ui/react";
4795
4829
  import { LuCopy, LuExternalLink, LuX as LuX2 } from "react-icons/lu";
4796
- import { useCallback as useCallback14, useEffect as useEffect6, useMemo as useMemo13, useRef as useRef4, useState as useState8 } from "react";
4797
- import { WalletState } from "@interchain-kit/core";
4830
+ import { useCallback as useCallback14, useEffect as useEffect7, useMemo as useMemo13, useRef as useRef4, useState as useState8 } from "react";
4831
+ import { WalletState as WalletState2 } from "@interchain-kit/core";
4798
4832
  import BigNumber14 from "bignumber.js";
4799
4833
  import { cosmos } from "@bze/bzejs";
4800
4834
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
@@ -4880,7 +4914,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
4880
4914
  const [memo, setMemo] = useState8("");
4881
4915
  const [memoError, setMemoError] = useState8("");
4882
4916
  const { toast } = useToast();
4883
- const { status, address } = useChain3(getChainName());
4917
+ const { status, address } = useChain4(getChainName());
4884
4918
  const { tx } = useSDKTx(getChainName());
4885
4919
  const coinsCollection = createListCollection2({
4886
4920
  items: balances.map((item) => {
@@ -4907,7 +4941,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
4907
4941
  toast.error("Can not send coins!", "Please check the input data.");
4908
4942
  return;
4909
4943
  }
4910
- if (status !== WalletState.Connected) {
4944
+ if (status !== WalletState2.Connected) {
4911
4945
  toast.error("Wallet not connected!", "Please connect your wallet first.");
4912
4946
  return;
4913
4947
  }
@@ -4969,7 +5003,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
4969
5003
  setMemoError("");
4970
5004
  }
4971
5005
  }, []);
4972
- useEffect6(() => {
5006
+ useEffect7(() => {
4973
5007
  if (selectedTicker !== "") {
4974
5008
  onCoinSelectChange(selectedTicker);
4975
5009
  }
@@ -5143,7 +5177,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
5143
5177
  address,
5144
5178
  disconnect,
5145
5179
  connect
5146
- } = useChain3(getChainName());
5180
+ } = useChain4(getChainName());
5147
5181
  const { assetsBalances, isLoading: assetsLoading } = useBalances();
5148
5182
  const balancesWithoutLps = useMemo13(() => {
5149
5183
  if (assetsLoading) return [];
@@ -5254,11 +5288,11 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
5254
5288
  ] });
5255
5289
  const statusColor = useMemo13(() => {
5256
5290
  switch (status) {
5257
- case WalletState.Connected:
5291
+ case WalletState2.Connected:
5258
5292
  return "green";
5259
- case WalletState.Connecting:
5293
+ case WalletState2.Connecting:
5260
5294
  return "yellow";
5261
- case WalletState.Disconnected:
5295
+ case WalletState2.Disconnected:
5262
5296
  return "red";
5263
5297
  default:
5264
5298
  return "gray";
@@ -5271,7 +5305,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
5271
5305
  /* @__PURE__ */ jsx5(Text3, { fontSize: "sm", fontWeight: "medium", children: "Wallet Status" }),
5272
5306
  /* @__PURE__ */ jsx5(Badge2, { colorPalette: statusColor, size: "sm", children: status })
5273
5307
  ] }),
5274
- status === WalletState.Connected && /* @__PURE__ */ jsxs4(
5308
+ status === WalletState2.Connected && /* @__PURE__ */ jsxs4(
5275
5309
  Box2,
5276
5310
  {
5277
5311
  p: "3",
@@ -5322,7 +5356,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
5322
5356
  ]
5323
5357
  }
5324
5358
  ),
5325
- status !== WalletState.Connected && /* @__PURE__ */ jsx5(
5359
+ status !== WalletState2.Connected && /* @__PURE__ */ jsx5(
5326
5360
  Button2,
5327
5361
  {
5328
5362
  size: "sm",
@@ -5334,8 +5368,8 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
5334
5368
  )
5335
5369
  ] }),
5336
5370
  /* @__PURE__ */ jsx5(Separator2, {}),
5337
- status === WalletState.Connected && viewState === "balances" && renderBalancesView(),
5338
- status === WalletState.Connected && viewState === "send" && /* @__PURE__ */ jsx5(SendForm, { balances: sortedBalances, onClose: handleCancel, selectedTicker: clickedBalance, accentColor })
5371
+ status === WalletState2.Connected && viewState === "balances" && renderBalancesView(),
5372
+ status === WalletState2.Connected && viewState === "send" && /* @__PURE__ */ jsx5(SendForm, { balances: sortedBalances, onClose: handleCancel, selectedTicker: clickedBalance, accentColor })
5339
5373
  ] });
5340
5374
  };
5341
5375
 
@@ -5646,6 +5680,7 @@ export {
5646
5680
  useSigningClient,
5647
5681
  useToast,
5648
5682
  useValidatorLogos,
5683
+ useWalletHealthCheck,
5649
5684
  validateBZEBech32Address,
5650
5685
  validateBech32Address,
5651
5686
  validateEndpoints,