-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Internal rewrite #288
Internal rewrite #288
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
@@ -48,6 +54,7 @@ describe('ConnectWalletCheck', () => { | |||
connectModal={{ | |||
providersOptions: { searchable: true }, | |||
}} | |||
logger={mockLogger} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is so our tests are not full of log statements
@@ -440,7 +440,7 @@ export default function Home(): React.ReactElement { | |||
url: 'https://react-celo.vercel.app', | |||
icon: 'https://react-celo.vercel.app/favicon.ico', | |||
}} | |||
network={Alfajores} | |||
defaultNetwork={Alfajores.name} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
network is still alright but now deprecated
network, | ||
feeCurrency, | ||
initError: connectorInitError, | ||
// Copy to ensure any accidental mutations dont affect global state | ||
networks: networks.map((net) => ({ ...net })), | ||
|
||
kit: connector.kit, | ||
account: connector.account, | ||
// the wallet address from Account.getWalletAddress => The address at which the account expects to receive transfers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CONSIDER: 5.0 standarize the use of fetchWalletAddress with defaultAccount vs address
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agreed
import { getApplicationLogger } from './logger'; | ||
|
||
function networkWatcher(connector: Connector, networks: Network[]) { | ||
connector.on(ConnectorEvents.WALLET_CHAIN_CHANGED, (chainId) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When starting on a network that isnt mainnet Valora (and any other wallet that only supports a single network) will automatically switch itself to the network it supports. I believe Valora never worked well with other networks if at all. and if it technically worked before because we were not handling changing network from wallet properly. but since we do now and valora only supports mainnet this will break
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that's correct, Valora only supports mainnet AFAIK. To use Alfajores you need to have the valora-alfajores version installed, which is a different app altogether.
* Get the URI needed for out of band session establishment | ||
*/ | ||
public async getUri() { | ||
await this.setupClient(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
called just to prevent breaking changes
@@ -129,22 +148,13 @@ export class WalletConnectWallet extends RemoteWallet<WalletConnectSigner> { | |||
throw error; | |||
} | |||
}; | |||
onSessionUpdated = (error: Error | null, session: SessionProposal): void => { | |||
onSessionUpdated = (error: Error | null, session: SessionUpdate): void => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the types before were not well defined (lots of anys) much better now
@@ -212,10 +222,9 @@ export class WalletConnectWallet extends RemoteWallet<WalletConnectSigner> { | |||
throw new Error('Wallet must be initialized before calling close()'); | |||
} | |||
this.canceler.cancel(); | |||
|
|||
// https://github.com/WalletConnect/walletconnect-monorepo/issues/315 | |||
localStorage.removeItem('walletconnect'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
always remove to prevent it being in weird states
|
||
const sdk = new CoinbaseWalletSDK({ | ||
appName: dapp?.name ?? '', | ||
appLogoUrl: dapp?.icon ?? '', | ||
reloadOnDisconnect: false, | ||
diagnosticLogger: { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😅
network, | ||
feeCurrency, | ||
initError: connectorInitError, | ||
// Copy to ensure any accidental mutations dont affect global state | ||
networks: networks.map((net) => ({ ...net })), | ||
|
||
kit: connector.kit, | ||
account: connector.account, | ||
// the wallet address from Account.getWalletAddress => The address at which the account expects to receive transfers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agreed
); | ||
const destroy = useCallback(async () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was never a fan of destroy to disconnect, but I guess I can survive with it not being...destroyed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
destroy is dead, long live disconnect
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); | ||
|
||
const SLEEP = 500; | ||
const MAX_WAIT_MINUTES = 5; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that may be a bit long?
import { getApplicationLogger } from './logger'; | ||
|
||
function networkWatcher(connector: Connector, networks: Network[]) { | ||
connector.on(ConnectorEvents.WALLET_CHAIN_CHANGED, (chainId) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that's correct, Valora only supports mainnet AFAIK. To use Alfajores you need to have the valora-alfajores version installed, which is a different app altogether.
|
||
return this.client?.uri; | ||
} | ||
|
||
onSessionCreated = (error: Error | null, session: IInternalEvent): void => { | ||
// heads up! common pattern for the onSession*** methods is to overwrite them externally |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't we want to get rid of that ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe but i can only do so much
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i was worried it would cause breaking changes to that api
…connecting, and inbetween steps
…c symmetry with connect action
fb3f12a
to
d733d09
Compare
Codecov Report
@@ Coverage Diff @@
## master #288 +/- ##
==========================================
+ Coverage 64.04% 65.35% +1.30%
==========================================
Files 79 82 +3
Lines 1858 1931 +73
Branches 259 241 -18
==========================================
+ Hits 1190 1262 +72
- Misses 454 463 +9
+ Partials 214 206 -8
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't see anything wrong with it but it was a lot to keep all in my head at once. I think that the tests failing should be investigated before we merge though.
* chore: Label all issues in repo as Applications so they show in zenhub * FEAT: Allow developers to pass in any networks they wish add passed networks as a return value of useContractKit replace NetWorkNames Enum with POJO so that its extendable Make Network interface support arbitrary networks and include option to pass in the nativeCurrency which is used when adding to metamask. For non celo networks dont try to add celo tokens to metamask * fix: update Fee Currency should only be an option for Connectors / wallets that support alternative gas fee currencies * lint extra imports * expose supportsFeeCurrency so devs can use to display conditional fee currency setting ops + demo it in our example app * make it clear why we are returning false * conflict * Append current browser location in Metamask mobile * replacing use of contractkit with minicontractkit * Missing Import * Add optional contractCache builder and memoization * Catch token not registered error, display balances * Fix empty block * Change value to be type string * Log error * upgrade to react 18 add testing utils start testing of Provider and hook * upgrade jest and friends remove react-test-render as we dont use and its not cool * feat: redesign and wc fixes (#169) * added search bar * added search bar and optimization * made some changes * feat: initial redesign * chore: remove unused unstated-next * chore: review feedback * fix: bad merge + pr review * perf: search * feat: adjust install logic Co-authored-by: Henry Nunez <henry.nunez@clabs.co> * Balances has BigNumber value and string error * chore: Add svg icon for celo terminal (#69) Add svg icon for celo terminal * docs: improve readme (#184) * docs(readme): fix typo * docs(readme): add better development instructions * refactor: remove check for window * docs(readme): remove v2 of WC from example * docs(readme): add wallets to list * docs(readme): add supported actions * fix: issue labeler error * fix(docs): original instructions with alternative * fix: remove toggle z-index to not interfere * fix: remove specific actions from wallet (#188) * move to target es6 All major browsers support es6 and this should improve bundle size too. https://www.typescriptlang.org/tsconfig#target * Renames use-contract kit to react-celo 4.0 now requires contractkit 2.0 and greater * fix typo Co-authored-by: Camila Rondinini <crondinini@gmail.com> * Add test for modal * no message * Add basic level testing for private-key and wallet connect connectors. * If the network is not set here than initialise call will just re establish connection to metamask with this.network (probably the one it was constructed with) * fix: adjust styles for mobile and specifically for ios safari (#192) * codeReview from @dckesler * Feat/theming (#198) * feat: initial theming * chore: codereview * test: add updateTheme tests * Add Aliases for old function names (#204) Add Aliases for old function names so its not a pain to upgrade to v4 * feat: wallet test plan page (#205) adds a page to the Example app (hidden in this commit) where the user can go through a set of steps to check how well a wallet interacts with the available actions of the package. * fix: export useContractKit (#215) * Some Network Change Errors (#216) * Add tests for address handling in reducer fix test file being misnamed fix some error messages and code comments to be more clear * fix #214 There was a destructuring error when init was not passed which is legal as its optional * fixes #209 when switching network feeCurrency could be undefined. In that case lets skip setting it. * fix: celo-wallet web connection (#217) * fix: celo-wallet web connection * refactor: rename getDesktopLink->getWebLink * fix: destroy not re-rendering * refactor: deeplinks and weblinks logic * Allow updateTheme to take a null value (#219) * Fix #211 Cleanup Init Errors (#223) * Fix #211 Cleanup Init Errors when going to a new Wallet Screen or closing the modal * lint: remove unused import * fix: handle disconnect events coming from sessionUpdate events * fix: show qrcode for mobile connectors * chore: eslint warnings * feat: show mobile disclaimer on apps with a deeplink * fix dark toggle on example app (#227) * Move the toggle down by the rest of the styling options this way it isnt blocking everything on mobile. also make it a little smaller * update the used by list not to include projects that are dead or use a fork * Change css classes to react-celo, include necessary TW css (#231) * 4.0 Alpha 2 * fix example app dependencies (#233) * fix example app dependencies * attempt fix on deploy * chore: configure test in example app (#234) Sets up tests in the example app, using the configuration from the root (modified only to accept .test files outside of __tests__). * docs: Add Migration Guide for v4 (#235) * Add Guides Co-authored-by: Camila Rondinini <crondinini@gmail.com> * style consistency Co-authored-by: Camila Rondinini <crondinini@gmail.com> * pr review @crondinini: clarify version needed * add proper link to release notes Co-authored-by: Camila Rondinini <crondinini@gmail.com> * v4.0.0-beta.1 (React Celo Beta 1) * refactor(useCelo types): make it explicit where types are coming from (#236) The same types were repeated in 3 different places. This reuses existing types instead of repeating them. As a side effect, it also moves documentation to where it's implemented and adds some missing ones. * fix add proper Type for initialState (#238) * remove ethereumjs utils (#242) * wip Removes ethereumjs-utils by copying the few functions we use from it and using alternatives * rename files, add license, add tests * remove name from jest config as it causes a warning * Optimize SVGs (#239) run svgs thru an optimizer then convert back to jsx to save bytes. (saved about 30%) (19k vs 30k) on wallet Icons * fix: Celo Utils is not used in react-celo, only in the example app (#240) Celo Utils is not used in react-celo, only in the example app * feat: add packages publisher (#241) * 4.0 release * feat: a11y/colors (#221) * feat: first pass at color checking * test: add color tests * Typed Local Storage (#243) * Access Local Storage Thru specific getter and setter functions only * remove extra file * remove some unneeded code * review: swtich to 2 typed functions rather than getter/setter per key add tests * lint and test * refactor: extract connectors, icons and standardize filenames (#260) * refactor: extract connectors and remove capitalization * refactor: extract wallet icons * chore: eslint * refactor: move use-contracts-cache * refactor: component naming * refactor: remove unused variable * fix 2 spots where old repo name was used (#262) * Update issue templates (#228) Co-authored-by: Camila Rondinini <crondinini@gmail.com> * Fix npm Badge (#263) * feat: wallet test plan (more tests and add to home) (#264) * fixes #203 deprecated network prop (#269) * fixes #203 deprecated network prop add defaultNetworkProp allow both for now. and favor network so that this is a nonbreaking change unless you count that this fixes passing in a unfindable network now throws an error instead of silently defaulting to mainnet * feat: create ressursurector, updator, & persistor * Persistor and Updator respond to events from Connectors * add persistor test and lint * Better emissions typing * improve typings and add explicit event emitter package ( very small) * add test for walletID (used by getRecent()) * When Modal is Open Dont Allow Background to scroll (#270) * Connect modal disable background scroll * Action modal disable background scroll * Fix linting * Move to helper * Remove unused imports * Fix import order * Use window scroll in useFixedBody * Use document.body.style Co-authored-by: zhaonancy <nancy.zhao@clabs.co> * Accessibility Fixes (#273) * Chrome Lighthouse accessibility fixes * Fix URL Co-authored-by: zhaonancy <nancy.zhao@clabs.co> * Add coinbase wallet support (#266) * Add coinbase wallet support * Add dapp name and icon to coinbase wallet sdk * feat: logger (#244) * feat: logger * test: add logging tests * test: fix test * Stable merge (#285) * 4.0 release (#256) * chore: Label all issues in repo as Applications so they show in zenhub * FEAT: Allow developers to pass in any networks they wish add passed networks as a return value of useContractKit replace NetWorkNames Enum with POJO so that its extendable Make Network interface support arbitrary networks and include option to pass in the nativeCurrency which is used when adding to metamask. For non celo networks dont try to add celo tokens to metamask * fix: update Fee Currency should only be an option for Connectors / wallets that support alternative gas fee currencies * lint extra imports * expose supportsFeeCurrency so devs can use to display conditional fee currency setting ops + demo it in our example app * make it clear why we are returning false * conflict * Append current browser location in Metamask mobile * replacing use of contractkit with minicontractkit * Missing Import * Add optional contractCache builder and memoization * Catch token not registered error, display balances * Fix empty block * Change value to be type string * Log error * upgrade to react 18 add testing utils start testing of Provider and hook * upgrade jest and friends remove react-test-render as we dont use and its not cool * feat: redesign and wc fixes (#169) * added search bar * added search bar and optimization * made some changes * feat: initial redesign * chore: remove unused unstated-next * chore: review feedback * fix: bad merge + pr review * perf: search * feat: adjust install logic Co-authored-by: Henry Nunez <henry.nunez@clabs.co> * Balances has BigNumber value and string error * chore: Add svg icon for celo terminal (#69) Add svg icon for celo terminal * docs: improve readme (#184) * docs(readme): fix typo * docs(readme): add better development instructions * refactor: remove check for window * docs(readme): remove v2 of WC from example * docs(readme): add wallets to list * docs(readme): add supported actions * fix: issue labeler error * fix(docs): original instructions with alternative * fix: remove toggle z-index to not interfere * fix: remove specific actions from wallet (#188) * move to target es6 All major browsers support es6 and this should improve bundle size too. https://www.typescriptlang.org/tsconfig#target * Renames use-contract kit to react-celo 4.0 now requires contractkit 2.0 and greater * fix typo Co-authored-by: Camila Rondinini <crondinini@gmail.com> * Add test for modal * no message * Add basic level testing for private-key and wallet connect connectors. * If the network is not set here than initialise call will just re establish connection to metamask with this.network (probably the one it was constructed with) * fix: adjust styles for mobile and specifically for ios safari (#192) * codeReview from @dckesler * Feat/theming (#198) * feat: initial theming * chore: codereview * test: add updateTheme tests * Add Aliases for old function names (#204) Add Aliases for old function names so its not a pain to upgrade to v4 * feat: wallet test plan page (#205) adds a page to the Example app (hidden in this commit) where the user can go through a set of steps to check how well a wallet interacts with the available actions of the package. * fix: export useContractKit (#215) * Some Network Change Errors (#216) * Add tests for address handling in reducer fix test file being misnamed fix some error messages and code comments to be more clear * fix #214 There was a destructuring error when init was not passed which is legal as its optional * fixes #209 when switching network feeCurrency could be undefined. In that case lets skip setting it. * fix: celo-wallet web connection (#217) * fix: celo-wallet web connection * refactor: rename getDesktopLink->getWebLink * fix: destroy not re-rendering * refactor: deeplinks and weblinks logic * Allow updateTheme to take a null value (#219) * Fix #211 Cleanup Init Errors (#223) * Fix #211 Cleanup Init Errors when going to a new Wallet Screen or closing the modal * lint: remove unused import * fix: handle disconnect events coming from sessionUpdate events * fix: show qrcode for mobile connectors * chore: eslint warnings * feat: show mobile disclaimer on apps with a deeplink * fix dark toggle on example app (#227) * Move the toggle down by the rest of the styling options this way it isnt blocking everything on mobile. also make it a little smaller * update the used by list not to include projects that are dead or use a fork * Change css classes to react-celo, include necessary TW css (#231) * 4.0 Alpha 2 * fix example app dependencies (#233) * fix example app dependencies * attempt fix on deploy * chore: configure test in example app (#234) Sets up tests in the example app, using the configuration from the root (modified only to accept .test files outside of __tests__). * docs: Add Migration Guide for v4 (#235) * Add Guides Co-authored-by: Camila Rondinini <crondinini@gmail.com> * style consistency Co-authored-by: Camila Rondinini <crondinini@gmail.com> * pr review @crondinini: clarify version needed * add proper link to release notes Co-authored-by: Camila Rondinini <crondinini@gmail.com> * v4.0.0-beta.1 (React Celo Beta 1) * 4.0 release Co-authored-by: zhaonancy <nancy.zhao@clabs.co> Co-authored-by: Nancy Zhao <32007540+zhaonancy@users.noreply.github.com> Co-authored-by: Nicolas Brugneaux <nicolas.brugneaux@gmail.com> Co-authored-by: Henry Nunez <henry.nunez@clabs.co> Co-authored-by: J M Rossy <jm.rossy@gmail.com> Co-authored-by: Camila Rondinini <crondinini@gmail.com> Co-authored-by: Daniel Kesler <danielckesler@gmail.com> * Fixes #268 (-webkit-fill-available vs background gradient bug) use react modals custom classname to add the styles to html and body only when our modal is open * Fix (hideFromDefaults option not hiding wallets) (#275) * fixes #274 (hide from defaults not hiding wallets) * return an array of which default providers are being used. rather than reuse all screens, which would have had extra and potentially gotten weird * beta 1 * update example app * measure once cut twice * Fix handling of reactModalProp (#278) * fixes the connect modal not recognizing when it receives style props externally. * ensure out styles are not overwritten. * Remove Extra Global Styles (#282) * remove tailwind base as it is messing with global styles * remove unnessessary css resets for react-celo * fix vertical allignments * beta 2 * release * Release/4.0.1 (#277) * Fixes #268 (-webkit-fill-available vs background gradient bug) use react modals custom classname to add the styles to html and body only when our modal is open * Fix (hideFromDefaults option not hiding wallets) (#275) * fixes #274 (hide from defaults not hiding wallets) * return an array of which default providers are being used. rather than reuse all screens, which would have had extra and potentially gotten weird * Fix handling of reactModalProp (#278) * fixes the connect modal not recognizing when it receives style props externally. * Remove Extra Global Styles (#282) * remove tailwind base as it is messing with global styles * remove unnessessary css resets for react-celo * fix vertical allignments * merge release/4.0.1 into master * fix merge issues * remove duplicated files Co-authored-by: zhaonancy <nancy.zhao@clabs.co> Co-authored-by: Nancy Zhao <32007540+zhaonancy@users.noreply.github.com> Co-authored-by: Nicolas Brugneaux <nicolas.brugneaux@gmail.com> Co-authored-by: Henry Nunez <henry.nunez@clabs.co> Co-authored-by: J M Rossy <jm.rossy@gmail.com> Co-authored-by: Camila Rondinini <crondinini@gmail.com> Co-authored-by: Daniel Kesler <danielckesler@gmail.com> * fix: regression in priority and style issue (#284) * fix: regression in priority and style issue * refactor: remove all variable shadowings * chore(deps): bump parse-url from 6.0.0 to 6.0.2 (#286) Bumps [parse-url](https://github.com/IonicaBizau/parse-url) from 6.0.0 to 6.0.2. - [Release notes](https://github.com/IonicaBizau/parse-url/releases) - [Commits](https://github.com/IonicaBizau/parse-url/commits) --- updated-dependencies: - dependency-name: parse-url dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * New Look for Demo Site (#290) fixes #258 * Make Top nav fixed to top and full width * add footer * add NPM link to nav * redesign home and layout, add nice colors, add footer more showcase like * add dark mode to the home page * make sure dark mode is ok on other pages * Internal rewrite (#288) * All Connectors emit Disconnect Event * Connectors emit connected events with params * make emit protected, ONLY callable by connectors, also fix cew test * switch address change to be emited event * WIP * replace loadConfig with resurector + loadPreviusState Move celo provider helpers to their own files. add listeners * remove persists * fix connector stub * end reducer effecting local storage * fix tests, no local storage * connector listerns must be listening BEFORE initialise is called * remove clearPreviousConfig calls from connectors * split up client settup from fetching URI. allow getURI to be called multiple times without creating new clients * expend test for wallet connect * missed extra import * WIP better netowkr changers * a little cleanup * remove unused code * fix tests * tests pass * wip Wallet connect connector connecting steps, changing networks, disconnecting, and inbetween steps * improve wc, handle CBW disconnect, remove account * update todos * fix lint errors * fix ts build * cleanup * replace console.xxx with our custom logger * self review * clear up verbose test runs * lint up * clean up tests. remove weird exit code * revert * add second test condition * more self review * review (@nicolasbrugneaux) rename destroy to disconnect for linguistic symmetry with connect action * a more reasonable time * unmount in the tests * mocking the balance might be why there is a balance Co-authored-by: Aaron DeRuvo <aaron.deruvo@clabs.co> * 4.1.0 alpha 1 * fix versions * Fix style bugs (#293) * add a default zindex of 40 (can be over written) (no need for mobile check here is both are the same) * fix body height while modal is open (in cases where the content isnt enought to push to full screen) * ensure full list of wallets is not bigger than viewable area / push up final by adding padding * Alpha 2 * Fix improper error when metamask gets locked (#298) * when metamask extension is locked it shows their being zero accounts available. Before it would error out and disconnect, Now we explicitly close (this is the same behavior rainbow wallet and uniswap.org did) * add properties that were missing on type * 4.1 Beta 1 * Fix z-index class not being properly prefixed * Beta 2 * Fix regression metamask network regression (#300) Fix regression where metamask would not be automatically switched to the dapp network. also fix token import to metamask to use new mento uri for logo * 4.1 Beta 3 Co-authored-by: zhaonancy <nancy.zhao@clabs.co> Co-authored-by: Nancy Zhao <32007540+zhaonancy@users.noreply.github.com> Co-authored-by: Nicolas Brugneaux <nicolas.brugneaux@gmail.com> Co-authored-by: Henry Nunez <henry.nunez@clabs.co> Co-authored-by: J M Rossy <jm.rossy@gmail.com> Co-authored-by: Camila Rondinini <crondinini@gmail.com> Co-authored-by: Daniel Kesler <danielckesler@gmail.com> Co-authored-by: cb-jake <95890768+cb-jake@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron DeRuvo <aaron.deruvo@clabs.co>
What's This?
This PR makes a number of internal changes to how data and state propegates thru the app with the intent of making it easier to reason about and fix some outstanding known (and unknown) bugs.
see https://docs.google.com/document/d/10guYFad1C5Yc4nC8BYcUSOh2REn_BJJ6HXbv3e5DHoc/edit#
Key Changes
Rewrite Connectors to be event emitters
emit events for new address, new network, connection, disconnection, failure states, special WC_* events, and more
greatly expand connector testing
handle wallets changing networks
handle disconnecting from a wallet (including closing contract kit) whether initiated from app or wallet
fix coinbase wallet disconnection issues
notes
✅ setup address changed emission
✅ determine the connect, initialisedConnector, connected flow, including having all ways of starting a connector be done thru same code (ie ressurector and initial connection)
✅ make all connector.initialise calls idempotent
✅ old Unauthenticated / forget connection behavior
✅ setup network changed emission
✅ replace loadConfig with resurrector
✅ setup updater and persistor
✅ remove the direct usage of local storage
✅ make sure its clear when we close PRIVATE key connector (destroying it deliberately should forget the key closing browser window should remember it)
✅ wallet connect connector needs to be updated to have address change
✅ wallet connect wallet get URI should not setup the event listeners.
✅ handle situation of connector started to be created but then failed or canceled (reset to Unauthenticated)
✅ the removal of connector.account as a public method
✅ replace console.info with our custom logger
Behavioral Divergences
Since network switching from wallet connect wallets is now properly support and Valora only supports celo mainnet using Valora with other networks is does not work since with wallet connect the wallet sends over a packet with address and chainID on any change including connection requests.
Officially Valora didnt work on other networks before but now it really wont at all.
Issues handled
FIXES #249
FIXES #207
FIXES #250