tiwiflix-wallet-connector 1.5.2 → 1.5.3

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.esm.js CHANGED
@@ -2344,6 +2344,11 @@ class WalletConnector {
2344
2344
  ...savedState,
2345
2345
  error: null, // Don't restore errors
2346
2346
  };
2347
+ // PATCH: Prevent invalid connected state
2348
+ if (this.state.status === ConnectionStatus.CONNECTED && !this.state.account) {
2349
+ this.state.status = ConnectionStatus.DISCONNECTED;
2350
+ this.state.wallet = null;
2351
+ }
2347
2352
  }
2348
2353
  this.eventEmitter = new EventEmitter$1();
2349
2354
  // Initialize advanced SDK management
@@ -8059,6 +8064,8 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8059
8064
  });
8060
8065
  }
8061
8066
  // Subscribe to events
8067
+ // Prevent repeated onConnect calls for the same account
8068
+ const lastOnConnectAddress = React.useRef(null);
8062
8069
  const unsubscribeAccount = connector.on(WalletEvent.ACCOUNT_CHANGED, async (acc) => {
8063
8070
  setAccount(acc);
8064
8071
  // Don't set isInitializing to false yet - wait for balance to load
@@ -8071,8 +8078,7 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8071
8078
  }
8072
8079
  }
8073
8080
  if (acc && acc.chainType === 'ton') {
8074
- // For TON: fetch both balance and NFTs
8075
- setTwcBalance('0'); // TON wallets don't have TWC
8081
+ setTwcBalance('0');
8076
8082
  try {
8077
8083
  await Promise.all([
8078
8084
  fetchTONBalance(acc),
@@ -8096,18 +8102,15 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8096
8102
  }
8097
8103
  }
8098
8104
  else if (acc) {
8099
- // No fetchBalance, check for TWC balance
8100
8105
  const state = connector.getState();
8101
8106
  if (state.twcBalance && state.twcBalance !== '0' && state.twcBalance !== '0.00') {
8102
8107
  setTwcBalance(state.twcBalance);
8103
8108
  setUsdValueStable(state.usdValue ?? null);
8104
- // Save to cache
8105
8109
  if (acc.address) {
8106
8110
  saveTWCBalanceToCache(acc.address, state.twcBalance, state.usdValue ?? null);
8107
8111
  }
8108
8112
  }
8109
8113
  else if (acc.address) {
8110
- // Try to load from cache as fallback
8111
8114
  const cached = loadTWCBalanceFromCache(acc.address);
8112
8115
  if (cached?.balance) {
8113
8116
  setTwcBalance(cached.balance);
@@ -8120,7 +8123,10 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8120
8123
  setIsInitializing(false);
8121
8124
  }
8122
8125
  if (acc && onConnect) {
8123
- onConnect(acc);
8126
+ if (lastOnConnectAddress.current !== acc.address) {
8127
+ onConnect(acc);
8128
+ lastOnConnectAddress.current = acc.address;
8129
+ }
8124
8130
  }
8125
8131
  });
8126
8132
  const unsubscribeStatus = connector.on(WalletEvent.STATUS_CHANGED, (newStatus) => {
@@ -8630,6 +8636,15 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8630
8636
  isBalanceResolved = !balanceLoading && !isInitializing;
8631
8637
  }
8632
8638
  const waitingForBalance = account && !isBalanceResolved;
8639
+ // Patch: If account is null and status is disconnected, always stop initializing/loading
8640
+ if (!account && status === ConnectionStatus.DISCONNECTED && (isInitializing || isConnecting || balanceLoading)) {
8641
+ if (isInitializing)
8642
+ setIsInitializing(false);
8643
+ if (isConnecting)
8644
+ setIsConnecting(false);
8645
+ if (balanceLoading)
8646
+ setBalanceLoading(false);
8647
+ }
8633
8648
  const isCheckingConnection = isInitializing || waitingForBalance || ((status === ConnectionStatus.CONNECTING || isConnecting) && !account);
8634
8649
  const isActuallyConnecting = (status === ConnectionStatus.CONNECTING || isConnecting) && account && isBalanceResolved;
8635
8650
  // Check connection state
package/dist/index.js CHANGED
@@ -2346,6 +2346,11 @@ class WalletConnector {
2346
2346
  ...savedState,
2347
2347
  error: null, // Don't restore errors
2348
2348
  };
2349
+ // PATCH: Prevent invalid connected state
2350
+ if (this.state.status === exports.ConnectionStatus.CONNECTED && !this.state.account) {
2351
+ this.state.status = exports.ConnectionStatus.DISCONNECTED;
2352
+ this.state.wallet = null;
2353
+ }
2349
2354
  }
2350
2355
  this.eventEmitter = new EventEmitter$1();
2351
2356
  // Initialize advanced SDK management
@@ -8061,6 +8066,8 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8061
8066
  });
8062
8067
  }
8063
8068
  // Subscribe to events
8069
+ // Prevent repeated onConnect calls for the same account
8070
+ const lastOnConnectAddress = React.useRef(null);
8064
8071
  const unsubscribeAccount = connector.on(exports.WalletEvent.ACCOUNT_CHANGED, async (acc) => {
8065
8072
  setAccount(acc);
8066
8073
  // Don't set isInitializing to false yet - wait for balance to load
@@ -8073,8 +8080,7 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8073
8080
  }
8074
8081
  }
8075
8082
  if (acc && acc.chainType === 'ton') {
8076
- // For TON: fetch both balance and NFTs
8077
- setTwcBalance('0'); // TON wallets don't have TWC
8083
+ setTwcBalance('0');
8078
8084
  try {
8079
8085
  await Promise.all([
8080
8086
  fetchTONBalance(acc),
@@ -8098,18 +8104,15 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8098
8104
  }
8099
8105
  }
8100
8106
  else if (acc) {
8101
- // No fetchBalance, check for TWC balance
8102
8107
  const state = connector.getState();
8103
8108
  if (state.twcBalance && state.twcBalance !== '0' && state.twcBalance !== '0.00') {
8104
8109
  setTwcBalance(state.twcBalance);
8105
8110
  setUsdValueStable(state.usdValue ?? null);
8106
- // Save to cache
8107
8111
  if (acc.address) {
8108
8112
  saveTWCBalanceToCache(acc.address, state.twcBalance, state.usdValue ?? null);
8109
8113
  }
8110
8114
  }
8111
8115
  else if (acc.address) {
8112
- // Try to load from cache as fallback
8113
8116
  const cached = loadTWCBalanceFromCache(acc.address);
8114
8117
  if (cached?.balance) {
8115
8118
  setTwcBalance(cached.balance);
@@ -8122,7 +8125,10 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8122
8125
  setIsInitializing(false);
8123
8126
  }
8124
8127
  if (acc && onConnect) {
8125
- onConnect(acc);
8128
+ if (lastOnConnectAddress.current !== acc.address) {
8129
+ onConnect(acc);
8130
+ lastOnConnectAddress.current = acc.address;
8131
+ }
8126
8132
  }
8127
8133
  });
8128
8134
  const unsubscribeStatus = connector.on(exports.WalletEvent.STATUS_CHANGED, (newStatus) => {
@@ -8632,6 +8638,15 @@ const ConnectButton = ({ connector, onConnect, onDisconnect, onError, className,
8632
8638
  isBalanceResolved = !balanceLoading && !isInitializing;
8633
8639
  }
8634
8640
  const waitingForBalance = account && !isBalanceResolved;
8641
+ // Patch: If account is null and status is disconnected, always stop initializing/loading
8642
+ if (!account && status === exports.ConnectionStatus.DISCONNECTED && (isInitializing || isConnecting || balanceLoading)) {
8643
+ if (isInitializing)
8644
+ setIsInitializing(false);
8645
+ if (isConnecting)
8646
+ setIsConnecting(false);
8647
+ if (balanceLoading)
8648
+ setBalanceLoading(false);
8649
+ }
8635
8650
  const isCheckingConnection = isInitializing || waitingForBalance || ((status === exports.ConnectionStatus.CONNECTING || isConnecting) && !account);
8636
8651
  const isActuallyConnecting = (status === exports.ConnectionStatus.CONNECTING || isConnecting) && account && isBalanceResolved;
8637
8652
  // Check connection state
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tiwiflix-wallet-connector",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": "Multi-chain wallet connector for Tiwiflix supporting EVM, TON, Solana, and Tron wallets",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",