diff --git a/scripts/fail_htlcs.go b/scripts/fail_htlcs.go index 911281c..15a8a9a 100644 --- a/scripts/fail_htlcs.go +++ b/scripts/fail_htlcs.go @@ -1,6 +1,12 @@ package scripts +import "github.com/lightsparkdev/go-sdk/objects" + const FAIL_HTLCS_MUTATION = ` -mutation FailHtlcs($invoice_id: ID!) { - fail_htlcs(input: { invoice_id: $invoice_id }) -}` +mutation FailHtlcs($invoice_id: ID!, $cancel_invoice: Boolean!) { + fail_htlcs(input: { invoice_id: $invoice_id, cancel_invoice: $cancel_invoice}) { + ...FailHtlcsOutputFragment + } +} + +` + objects.FailHtlcsOutputFragment diff --git a/services/lightspark_client.go b/services/lightspark_client.go index 19887bc..08f22a5 100644 --- a/services/lightspark_client.go +++ b/services/lightspark_client.go @@ -1058,16 +1058,28 @@ func (client *LightsparkClient) FetchIncomingPaymentsByInvoice(invoiceId string, return &payments, nil } -func (client *LightsparkClient) FailHtlc(invoiceId string) (error) { +func (client *LightsparkClient) FailHtlc(invoiceId string, cancelInvoice bool) (*objects.FailHtlcsOutput, error) { variables := map[string]interface{}{ "invoice_id": invoiceId, + "cancel_invoice": cancelInvoice, } - _, err := client.Requester.ExecuteGraphql(scripts.FAIL_HTLCS_MUTATION, variables, nil) + response, err := client.Requester.ExecuteGraphql(scripts.FAIL_HTLCS_MUTATION, variables, nil) if err != nil { - return err + return nil, err + } + + output := response["fail_htlcs"].(map[string]interface{}) + var failHtlcs objects.FailHtlcsOutput + failHtlcsJson, err := json.Marshal(output) + if err != nil { + return nil, errors.New("error parsing fail htlcs") + } + err = json.Unmarshal(failHtlcsJson, &failHtlcs) + if err != nil { + return nil, err } - return nil + return &failHtlcs, nil } func hashPhoneNumber(e614PhoneNumber string) (*string, error) {