Skip to content

Commit 4b0c4b1

Browse files
authored
[core-v2.2.1] : Fix - Add check for connection rejection when autoSelecting Wallet (#933)
* Aaron again workin his magic to properly handle auto set when connection rejected * Reformat file and cleanup
1 parent da1cfd7 commit 4b0c4b1

File tree

2 files changed

+36
-30
lines changed

2 files changed

+36
-30
lines changed

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@web3-onboard/core",
3-
"version": "2.2.0",
3+
"version": "2.2.1",
44
"scripts": {
55
"build": "rollup -c",
66
"dev": "rollup -c -w",

packages/core/src/views/connect/Index.svelte

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<script lang="ts">
22
import { ProviderRpcErrorCode, WalletModule } from '@web3-onboard/common'
33
import { BigNumber } from 'ethers'
4+
import { BehaviorSubject, takeUntil } from 'rxjs'
45
import EventEmitter from 'eventemitter3'
56
import { _ } from 'svelte-i18n'
67
import en from '../../i18n/en.json'
78
import { selectAccounts } from '../../provider'
89
import { state } from '../../store'
9-
import { connectWallet$, internalState$ } from '../../streams'
10+
import { connectWallet$, internalState$, onDestroy$ } from '../../streams'
1011
import {
1112
getChainId,
1213
requestAccounts,
@@ -47,12 +48,16 @@
4748
let windowWidth: number
4849
let scrollContainer: HTMLElement
4950
50-
const walletToAutoSelect =
51+
let walletToAutoSelect =
5152
autoSelect &&
5253
walletModules.find(
5354
({ label }) => label.toLowerCase() === autoSelect.label.toLowerCase()
5455
)
5556
57+
const modalStep$ = new BehaviorSubject<keyof i18n['connect']>(
58+
'selectingWallet'
59+
)
60+
5661
// ==== SELECT WALLET ==== //
5762
async function selectWallet({
5863
label,
@@ -185,6 +190,9 @@
185190
// user rejected account access
186191
if (code === ProviderRpcErrorCode.ACCOUNT_ACCESS_REJECTED) {
187192
connectionRejected = true
193+
if (autoSelect) {
194+
walletToAutoSelect = null
195+
}
188196
return
189197
}
190198
@@ -229,31 +237,29 @@
229237
setTimeout(() => connectWallet$.next({ inProgress: false }), 1500)
230238
}
231239
232-
let step: keyof i18n['connect'] = 'selectingWallet'
233-
234-
// ==== STEP HANDLING LOGIC ==== //
235-
$: switch (step) {
236-
case 'selectingWallet': {
237-
if (walletToAutoSelect) {
238-
autoSelectWallet(walletToAutoSelect)
239-
} else {
240-
loadWalletsForSelection()
240+
modalStep$.pipe(takeUntil(onDestroy$)).subscribe(step => {
241+
switch (step) {
242+
case 'selectingWallet': {
243+
if (walletToAutoSelect) {
244+
autoSelectWallet(walletToAutoSelect)
245+
} else {
246+
loadWalletsForSelection()
247+
}
248+
break
249+
}
250+
case 'connectingWallet': {
251+
connectWallet()
252+
break
253+
}
254+
case 'connectedWallet': {
255+
updateAccountDetails()
256+
break
241257
}
242-
243-
break
244-
}
245-
case 'connectingWallet': {
246-
connectWallet()
247-
break
248-
}
249-
case 'connectedWallet': {
250-
updateAccountDetails()
251-
break
252258
}
253-
}
259+
})
254260
255261
function setStep(update: keyof i18n['connect']) {
256-
step = update
262+
modalStep$.next(update)
257263
}
258264
259265
function scrollToTop() {
@@ -331,14 +337,14 @@
331337
<Modal {close}>
332338
<div class="container relative flex">
333339
{#if windowWidth >= 809}
334-
<Sidebar {step} />
340+
<Sidebar step={$modalStep$} />
335341
{/if}
336342

337343
<div class="content flex flex-column">
338344
<div class="header relative flex items-center">
339345
<h4 class="header-heading">
340-
{$_(`connect.${step}.header`, {
341-
default: en.connect[step].header,
346+
{$_(`connect.${$modalStep$}.header`, {
347+
default: en.connect[$modalStep$].header,
342348
values: {
343349
connectionRejected,
344350
wallet: selectedWallet && selectedWallet.label
@@ -351,7 +357,7 @@
351357
</div>
352358

353359
<div class="scroll-container" bind:this={scrollContainer}>
354-
{#if step === 'selectingWallet'}
360+
{#if $modalStep$ === 'selectingWallet'}
355361
{#if wallets.length}
356362
<Agreement bind:agreed />
357363

@@ -368,7 +374,7 @@
368374
{/if}
369375
{/if}
370376

371-
{#if step === 'connectingWallet' && selectedWallet}
377+
{#if $modalStep$ === 'connectingWallet' && selectedWallet}
372378
<ConnectingWallet
373379
{connectWallet}
374380
{connectionRejected}
@@ -378,7 +384,7 @@
378384
/>
379385
{/if}
380386

381-
{#if step === 'connectedWallet' && selectedWallet}
387+
{#if $modalStep$ === 'connectedWallet' && selectedWallet}
382388
<ConnectedWallet {selectedWallet} />
383389
{/if}
384390
</div>

0 commit comments

Comments
 (0)