fedimint-web-sdk
fedimint-web-sdk copied to clipboard
Update RPC types to have consistent `status` key
Currently, the subscribeLnReceive and subscribeLnPay functions return a status with the following types:
type LnPayState =
| 'created'
| 'canceled'
| { funded: { block_height: number } }
| { waiting_for_refund: { error_reason: string } }
| 'awaiting_change'
| { Success: { preimage: string } }
| { refunded: { gateway_error: string } }
| { unexpected_error: { error_message: string } }
type LnReceiveState =
| 'created'
| { waiting_for_payment: { invoice: string; timeout: number } }
| { canceled: { reason: string } }
| 'funded'
| 'awaiting_funds'
| 'claimed'
This makes pattern matching a bit ugly for the SDK because objects and strings are mixed.
Let's changes the types to have a consistent shape:
type LnPayState =
| { status: 'created' }
| { status: 'canceled' }
| { status: 'funded'; block_height: number }
| { status: 'waiting_for_refund'; error_reason: string }
| { status: 'awaiting_change' }
| { status: 'Success'; preimage: string }
| { status: 'refunded'; gateway_error: string }
| { status: 'unexpected_error'; error_message: string }
type LnReceiveState =
| { status: 'created' }
| { status: 'waiting_for_payment'; invoice: string; timeout: number }
| { status: 'canceled'; reason: string }
| { status: 'funded' }
| { status: 'awaiting_funds' }
| { status: 'claimed' }
@maan2003
this is not possible, because fedimint commits to the first json representation in the database :/
if we change it, fedimint client will become backwards incompatible
Could we just transform the shape before returning it to the caller?
If not, I'll just do that in the javascript
should do it in javascript, I don't want yet another RpcLnPayState(MaybeLoading) in rust.