~singpolyma/sgx-jmp

ref: cf84aefb3cd315229da443304144ec7a8a9c5aed sgx-jmp/lib d---------
Handle invalid customer id

An invalid customer id is an error from braintree, so handle the error and
return an empty list of payment methods.
Refactor command list to use composition

Also rename buy credit to top up
Add btc_addresses to Customer

And use that in registration instead of implementing it inline
Command to get to the credit card settings page
Validate that amount of credit to buy is in valid range
Rename buy-credit to buy credit
When no plan, all plan attributes are nil
Merge branch 'conditionally-show-commands'

* conditionally-show-commands:
  Only show buy credit option if customer has a plan and a credit card
  Show commands conditionally (plus add voicemail record command)
Only show buy credit option if customer has a plan and a credit card
Show commands conditionally (plus add voicemail record command)

Refactor to a factory that allows commands to be shown conditionally, so that
the voicemail record command can only be shown if the customer has a forwarding
target set up.
Merge branch 'credit-card-bonus'

* credit-card-bonus:
  Insert bonus when paying by credit card
Merge branch 'tel-search-temp'

* tel-search-temp:
  No tel picker yet, so just go to the webpage
Insert bonus when paying by credit card
Merge branch 'bitcoin-tmp'

* bitcoin-tmp:
  Save legacy session for Bitcoin flow
Fix sentry issue SGX-JMP-4

Typo not caught by tests because this method had none.  Add a test, fix the typo.
This is not really an error, it just means you're all done
Save legacy session for Bitcoin flow

This is not a permanent solution, but for now it will allow Bitcoin flow users
to get the same message from the cronjob that legacy web flow users get, and
thus complete their signup using the legacy web flow.

Eventually we'll want to reverse this and direct every Bitcoin activation via a
new end flow.
No tel picker yet, so just go to the webpage

Direct users to the homepage if they haven't selected a tel yet.  Not what we
want eventually, but better than crashing.
Merge branch 'create-reset-sip-account'

* create-reset-sip-account:
  Create or reset SIP account
  Factor out Catapult connection
Create or reset SIP account

New command to create or reset SIP account.  Always try create first because
it's faster and more common, fall back to search the list for our account if
that fails due to conflict.  Password is always randomly generated from the
mnemonicode word list.
Next