Skip to content

Commit 01b7538

Browse files
fix: ensure correct connected network (#47)
* fix: ensure correct connected network * chore: remove debris
1 parent e8d0ec9 commit 01b7538

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

src/lib/withdraw/actions/connect-wallet.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { iscAbi, iscContractAddress } from '$lib/withdraw';
44
import { WTOKEN_CONTRACT_CHAIN_MAP, wIOTAAbi, wSMRAbi, wToken } from '$lib/wrap';
55
import { defaultEvmStores, selectedAccount, web3 } from 'svelte-web3';
66
import { get } from 'svelte/store';
7-
import { addSelectedNetworkToMetamask, subscribeBalance } from '.';
7+
import { addSelectedNetworkToMetamask, subscribeBalance, subscribeConnectedNetwork } from '.';
88
import { updateWithdrawStateStore, withdrawStateStore } from '../stores';
99

1010
export async function connectToWallet() {
@@ -35,6 +35,7 @@ export async function connectToWallet() {
3535
const wTokenContractObj = new wToken(get(withdrawStateStore)?.contractWToken);
3636
updateWithdrawStateStore({ wTokenContractObj });
3737

38+
await subscribeConnectedNetwork();
3839
await subscribeBalance();
3940
} catch (ex) {
4041
console.error('Failed to connect to wallet: ', ex.message);
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { defaultEvmStores } from 'svelte-web3';
22

3-
import { unsubscribeBalance } from './subscriptions';
3+
import { unsubscribeConnectedNetwork, unsubscribeBalance } from './subscriptions';
44

55
export async function disconnectWallet(): Promise<void> {
66
await defaultEvmStores.disconnect();
7+
unsubscribeConnectedNetwork();
78
unsubscribeBalance();
89
}

src/lib/withdraw/actions/subscriptions.ts

+31
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
import { clearIntervalAsync, setIntervalAsync } from 'set-interval-async';
2+
import { chainId, connected, selectedAccount } from 'svelte-web3';
23
import { get } from 'svelte/store';
34

45
import { updateWithdrawStateStore, withdrawStateStore } from '../stores';
56
import { pollAccount } from './polls';
67

8+
9+
import { selectedNetwork } from '$lib/evm-toolkit';
10+
import { NotificationType, showNotification } from '$lib/notification';
11+
import { disconnectWallet } from '.';
12+
713
export async function subscribeBalance() {
814
await unsubscribeBalance();
915
const $withdrawStateStore = get(withdrawStateStore);
@@ -28,3 +34,28 @@ export async function unsubscribeBalance() {
2834
balancePollingHandle: undefined,
2935
});
3036
}
37+
38+
let connectedNetworkInterval: NodeJS.Timeout | null = null;
39+
export async function subscribeConnectedNetwork() {
40+
connectedNetworkInterval = setInterval(async () => {
41+
if (get(connected) || get(selectedAccount)) {
42+
if (BigInt(get(chainId)) !== BigInt(get(selectedNetwork)?.chainID)) {
43+
try {
44+
await disconnectWallet();
45+
} catch (e) {
46+
showNotification({
47+
type: NotificationType.Error,
48+
message: e,
49+
});
50+
console.error(e);
51+
}
52+
}
53+
}
54+
}, 1000);
55+
}
56+
57+
export async function unsubscribeConnectedNetwork() {
58+
if (connectedNetworkInterval) {
59+
clearInterval(connectedNetworkInterval);
60+
}
61+
}

0 commit comments

Comments
 (0)