Skip to content

Commit

Permalink
merge walletRouter api onto window.ethereum
Browse files Browse the repository at this point in the history
So it's easier to discover the added functionality
  • Loading branch information
Gergo Nagy committed Apr 13, 2022
1 parent 1f395d3 commit 2f5c054
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions src/window-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,10 @@ if (!window.walletRouter) {
this.currentProvider = this.providers[providerIdex]
},
addProvider(newProvider: WalletProvider) {
this.providers.push(newProvider)
if (!this.providers.includes(newProvider)) {
this.providers.push(newProvider)
}

this.previousProvider = newProvider
},
},
Expand All @@ -81,7 +84,23 @@ if (!window.walletRouter) {

Object.defineProperty(window, "ethereum", {
get() {
return window.walletRouter?.currentProvider || window.tally
return new Proxy(window.walletRouter!.currentProvider, {
get(target, prop, receiver) {
if (
window.walletRouter &&
!(prop in window.walletRouter!.currentProvider) &&
prop in window.walletRouter!
) {
// let's publish the api of `window.walletRoute` also on `window.ethereum` for better discoverability

// @ts-expect-error ts accepts symbols as index only from 4.4
// https://stackoverflow.com/questions/59118271/using-symbol-as-object-key-type-in-typescript
return window.walletRouter[prop]
}

return Reflect.get(target, prop, receiver)
},
})
},
set(newProvider) {
window.walletRouter?.addProvider(newProvider)
Expand Down

0 comments on commit 2f5c054

Please sign in to comment.