[Cashtab] [Alias] pt 6.3 - Implement updateAliases
Summary:
T2551
Depends on D13025
This diff implements the logic in Alias.js to detect when the cached totalPaymentTxCount is out of sync with the onchain count, and then proceeds to refresh the caching object in localForage via updateAliases.
Key considerations
- updateAliases takes in a previously retrieved aliasPaymentTxHistory from the initial loading of Alias.js, hence does not need to make any further API calls.
- Since aliasPaymentTxHistory is retrieved up front, the totalPaymentTxCount figure is simply calculated via aliasPaymentTxHistory.length with no further API calls.
- In order to generate the final form of the alias cache object where aliases is an array of both alias and addresses, I will need to update getAliases() to extract both alias and addresses. Due to its complexity this is planned separately as part 6.4, coming up next.
- Part 6.5 will optimize getAllTxHistory to only make API calls for uncached history pages as per feedback.
Updated diff stack
[Cashtab] [Alias] pt 1 - Create scaffold for new Identity component
[Cashtab] [Alias] pt 2 - Upgrade sendXec() to handle alias registration
[Cashtab] [Alias] pt 3 - Implement isAliasAvailable function
[Cashtab] [Alias] pt 4 - Implement isAddressRegistered function
[Cashtab] [Alias] pt 5 - Implement getAddressFromAlias function
[Cashtab] [Alias] pt 6.1 - Get latest alias tx count from payment address
[Cashtab] [Alias] pt 6.1.1 - Apply Promise.All approach for alias history retrieval
[Cashtab] [Alias] pt 6.2 - Implement getAliasesFromLocalForage
[Cashtab] [Alias] pt 6.3 - Implement updateAliases
[Cashtab] [Alias] pt 6.4 - Update getAliases() to extract both alias and address
[Cashtab] [Alias] pt 6.5 - Optimize getAllTxHistory to only make API calls for uncached tx history pages
[Cashtab] [Alias] pt 6.6 - Deprecate caching related mocks, @TODOs and reviewer logs
[Cashtab] [Alias] pt 7 - Mitigate edge cases for registration records
[Cashtab] [Alias] pt 8 - Enable alias lookup for Send XEC component
[Cashtab] [Alias] pt 9 - Enable alias lookup for Send Token component
[Cashtab] [Alias] pt 10 - Upgrade tx history to recognize alias registration txs
[Cashtab] [Alias] pt 11 - Set final registration fees and remove residual dev logs
Test Plan:
- npm test
- npm start
- navigate to the Alias page and observe console log indicating alias cache refresh required and cache update completion. Navigate away and then back to Alias and observe no update of the cache required.
- register a new alias
- navigate away and then back to the Alias page, observe console log indicating the onchain totalPaymentTxCount is 1 higher than the cached instance, along with alias cache refresh required
- switch to another wallet and ensure matching totalPaymentTxCount's results in no update of the cache.
- send a normal XEC tx to the payment address and then navgiate back to the Alias page, observe the app detects the need to refresh alias cache
- test with a newly created wallet on a different browser and observe the app detecting the need to refresh the alias cache
Reviewers: bytesofman, #bitcoin_abc
Reviewed By: bytesofman, #bitcoin_abc
Differential Revision: https://reviews.bitcoinabc.org/D13049