-
Notifications
You must be signed in to change notification settings - Fork 1
Re-write LightWallet and MWC in Typescript. Using modern packages. #145
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
Conversation
After spending some time thinking on it, I think that this is generally the structural direction we want to head in. I wasn't as thoughtful as I should have been originally about the This Issue over at Ionic sheds a little light on the topic: ionic-team/ionic-framework#6847 It sounds like they are heading in the direction of The biggest open question on my mind is how to handle the primary navigation views. (The tabs: Send, Receive, Community, etc.) In order to get the modernization refactor done quickly without introducting too much risk, we can keep all these pages grouped (as they are today), perhaps with a more semantic name. Some ideas that come to mind are:
Of the above, I like |
Another important approach thing to think about is how much has been (over)loaded into the profile service. Going forward, we should strive to separate out thematically relevant functionality into more moderately-sized modules (including services). At a high-level, I could see something like:
|
Phew. Now you can click through the tourFlow with the new structure. And BWC makes a call to BWS when you attempt to unlock the wallet. I want to clarify one thing as of this point: So, the question is, why do it? The answer is: we want to etch a blueprint of the architecture we desire in the code as of now. Yes, many components are still tightly coupled, so we do not get many of the benefits of lazy-loading. But, now that we have a framework, folder-structure, and a stylistic (folder-by-feature) approach in place, we can start refactoring in that direction. So, in short, it'll get a bit worse before it gets better. But it will get better. |
Phew. As of now, this branch now has working transactions and eventing. It also has the bluebird types, and MeritWalletClient is typed in most places throughout the app to gain the true power of TypeScript. |
also fixes image paths for tx actions
more DRY, get rid of debug messages
Get rid of edgesRatio in blockheader
This also includes some small UI fixes related to resizing the vault info screen. The next step is to modify the vault coins stored in mongo and local storage so that the state of the vault is known.
Falling back to long-polling for real-time application updates.
Additional core stability enhancements before 1.0.
Style looks like the normal send confirmation screen.
…tyling Barrow and steal styling from send page to vault spend confirmation.
Instead of using the cached value.
Computing actual vault balances from utxos.
…real-time * origin/major/modernize: Computing actual vault balances from utxos. Missing vault spend confirm css. revert bws url to localhost Barrow and steal styling from send page to vault spend confirmation.
Update vault status
…te one. With types.
1. Updated vault is now saved in mongo. 2. Whitelist addresses are correct.
Fix whitelist selection during vault renew.
bug - trying to use unconfirmed utxo crashes bws
…sume from background state.
Re-doing the network view and the logic to be faster and more usable.
Showing transactions on the wallets screen on first load of the app.
This is an experimental branch that considers upgrading core packages and restructuring the core LW application architecture.
ONGOING TODO LIST:
bwsEvent
for everything. (Ex.Local:Tx:Broadcast
) [Split up 'bwsEvent' into relevant component events that can be processed separately. #213]=======================MERGE LINE=================================
Investigate upgrading the Express Package. (We're almost ~3 years behind here.) [Spike upgrading to latest version of Express in MWS. #201]
Investigate upgrading async package. (We're almost ~3 years behind here.) [[MWS] Spike upgrading to latest version of Async. #202]
Improve the usability of spending unconfirmed inputs. [LW should gracefully handle insufficient funds. #203]
Requests to
/addresses/
and/wallets/
are blocked until getNotifications returns. [Requests are somehow blocked or delayed by getNotifications. #204]Display recent transactions on the Wallets View (Home) [Show recent transactions on the Wallets View (Home) #205]
Modernize easySend functionality. [Modernize EasySend #210]
Consider optimal way to format numbers on the wallet details page. [Improve formatting of amounts throughout LW. #211]
Enhance the usability around coinbase rewards and spending them. [Enhance the usability of receiving and sending coinbase rewards. #215]
Enhance the usability and clarity around balances, especially just after spending Merit. [Enhance usability and flow around available balances. #216]
Bug: GetTxHistory doesn't work if you haven't actually refreshed the status. [GetTxHistory does not properly load history when wallet does not have a status. #217]
Show the "balance details" modal on the walletDetails screen. [Show the "balance details" modal on the walletDetails screen. #280]
Better caching of UTXOs and inputs by address. [Better caching of UTXOs and Balances by Address #221]
Queue requests to insight-API. [Queue requests to Insight-API. #220]
Type the ambiguous 'wallets' properly throughout the application. (Should almost always be
MeritWalletClient
type.) [Ensure that we type all MWC instances in LW as MeritWalletClient #222]It appears that Ionic events are broadcast more than once. If this is the case, fix. [Ionic Events are broadcasted/received more than once. #223]
DONE: