hyperweb-io/ts-codegen

add event emitter option for client to support messages composer

Opened this issue · 0 comments

Some users may want to control state a bit more than what client.execute provides, which is the default way the client operates. For example, client.execute current does this:

  1. composes the messages
  2. signs the message
  3. broadcasts the message

The issue is that, during #2, the user may be signing via keplr, and technically there is more state involved, if perhaps you wanted to display a spinning loader to the user interfaces.

Example of separating these out using the current message composer option:
https://github.com/EquilibriumEtf/frontend/blob/main/contexts/tx.tsx
https://gist.github.com/pyramation/0ce63b6026cc15a68c46454af2c879de

However, this implementation is conflating UI and transaction state. I think a solid implementation could involve adding an option to the client option that enables an emitter, or some state object that can emit state to objects outside of the class instance during a transaction, potentially messages/state like is_signing, is_broadcasting