Cashtab has a bug in tx parsing that causes the UI to lock while tx history is rendered. It's especially noticeable on wallets with Agora txs in history.
'
Tx parsing should be done async. The parsed tx should then be passed to the Tx component for rendering.
We have instead been using the Tx component to parse and render txs.
This diff refactors Cashtab tx parsing so that all parsing is handled by the parseTx function, which is called async on each tx. When the history is ready, it is passed to the Tx component for rendering.
The size of the refactor makes this a difficult review. However, now that parsedTx is strongly typed, the logic changes can be deduced from the new type definitions. We preserve all of the rendering tests, which are updated for some differences in parsing (for example, we now parse each tokenEntry insteead of just the first).