Customer always has a JID
Merge branch 'command-object' * command-object: ErrorToSend => FinalStanza Since Command#finish causes an error, a then off the end won't work Refactor commands to have Command and Command::Execution objects
ErrorToSend => FinalStanza
Refactor commands to have Command and Command::Execution objects Brings the common elements of all commands together, and threads the most useful state (such as ability to reply) through automatically using the new EMPromise fiber trampoline.
Merge branch 'logging' * logging: Slightly better logging
Slightly better logging Import structured logging gem ougai and replace current use of puts/warn with logging calls. Gives us level, timestamp, and formatting for exceptions and/or hash of arbitrary context data. Can do JSON logging if we ever need that, but set to human-readable (with colour if isatty) for now.
On SGX register! failure, return a useful error to user
Alt registration payment wording
No more "choose next" Instead, adhoc bot will show the options for actions to take
Set catapult_fwd_timeout on our backend-facing JID Not on our inbound-facing JID. This is why we shouldn't be mucking in the SGX's Redis at all...
Fix Invites with Empty Guard Turns out every user will start with no attempts, and the code wasn't handling that case. Oops.
Cheogram should not save the route since signup is not done
Signup should work if rate center lookup fails
Allow using pay-by-mail or eTransfer during register Just gives them the information and we're done. Support has to manually process these payments anyway.
Add btc_addresses to Customer And use that in registration instead of implementing it inline
Merge branch 'bitcoin-tmp' * bitcoin-tmp: Save legacy session for Bitcoin flow
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.
Add missing require To allow these modules to be used in isolation (especially when testing).