Supporting bip21, aliases, and fiat send amounts from one screen demands complex validation. This validation should be handled in a function that can be unit tested automatically.
Move address validation logic from SendXec and SendToken components into parseAddressInput function, which is called anyway, and already performs other types of validation.
Return error messages specific to bip21 parameters, if present.
Return error message specific to queryString, if present.
Add automated integration tests to SendXec and SendToken components to test these conditions.
Background
We have a lot going on in this diff. SendXec and SendToken handle slightly different input cases. Originally, only addresses were handled. Then we supported only the amount param in query strings. Then the extension implemented its own way of populating txs with txInfoFromUrl.
All of the validation should be handled in one easily unit tested function. Before this diff, validation was done piecemeal, with some occuring in the components (where it had to manually tested), and some occuring in parseAddressForParams.
After this diff, all validation except the alias server call occurs in parseAddressInput, which replaces the legacy parseAddressForParams. We now return more granular error msgs. We also have automatic integration testing to cover the more complex range of available user input, including the alias server calls. This will simplify planned support of additional bip21 features like multiple outputs and op_return_raw.