HomePhabricator

[Cashtab] [WS Update Engine Part 2] Deprecate useAsyncTimeout in favor of…

Description

[Cashtab] [WS Update Engine Part 2] Deprecate useAsyncTimeout in favor of useInterval hook to support dynamic changes wallet utxo refresh interval

Summary:
T2447

Depends on D11656

Part 2 (of 4 planned) stacked diff for converting Cashtab from a static refresh rate to an on-demand refresh rate depending on Websocket transaction messages

This diff deprecates the useAsyncTimeout custom hook in favor of the useInterval custom hook described at https://overreacted.io/making-setinterval-declarative-with-react-hooks/. This custom hook has the benefit of adjusting the interval on the fly. In testing, useAsyncTimeout did not work with this feature.

useAsyncTimeout as a function predates the Cashtab Mint fork. So, while the benefit of this useInterval function is clear, keep in mind https://en.wiktionary.org/wiki/Chesterton's_fence

Reviewing useAsyncTimeout, the custom hook was necessary due to the way React handles state compared to the useInterval and setTimeout APIs.

Test Plan:
npm start
Confirm wallet utxo set and balance updates on received XEC tx
Confirm wallet utxo set and balance updates on received eToken tx
Mint an eToken
Change wallets
Run the same tests

Reviewers: #bitcoin_abc, emack

Reviewed By: #bitcoin_abc, emack

Differential Revision: https://reviews.bitcoinabc.org/D11657