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 +21 -6
- package/dist/index.js +21 -6
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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