mirror of
https://github.com/getAlby/lndhub.go.git
synced 2025-12-20 06:05:08 +01:00
chore: optimize keysend/multikeysend balance checks
This commit is contained in:
@@ -81,7 +81,22 @@ func (controller *KeySendController) KeySend(c echo.Context) error {
|
|||||||
c.Logger().Errorf("Invalid keysend request body: %v", err)
|
c.Logger().Errorf("Invalid keysend request body: %v", err)
|
||||||
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
|
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
|
||||||
}
|
}
|
||||||
|
syntheticPayReq := &lnd.LNPayReq{
|
||||||
|
PayReq: &lnrpc.PayReq{
|
||||||
|
NumSatoshis: reqBody.Amount,
|
||||||
|
},
|
||||||
|
Keysend: true,
|
||||||
|
}
|
||||||
|
resp, err := controller.svc.CheckPaymentAllowed(context.Background(), syntheticPayReq, userID)
|
||||||
|
if resp != nil {
|
||||||
|
c.Logger().Errorf("User does not have enough balance user_id:%v amount:%v", userID, syntheticPayReq.PayReq.NumSatoshis)
|
||||||
|
return c.JSON(resp.HttpStatusCode, resp)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
errResp := responses.GeneralServerError
|
||||||
|
c.Logger().Errorf("Failed to send keysend: %s", errResp.Message)
|
||||||
|
return c.JSON(errResp.HttpStatusCode, errResp)
|
||||||
|
}
|
||||||
result, errResp := controller.SingleKeySend(c.Request().Context(), &reqBody, userID)
|
result, errResp := controller.SingleKeySend(c.Request().Context(), &reqBody, userID)
|
||||||
if errResp != nil {
|
if errResp != nil {
|
||||||
c.Logger().Errorf("Failed to send keysend: %s", errResp.Message)
|
c.Logger().Errorf("Failed to send keysend: %s", errResp.Message)
|
||||||
@@ -119,6 +134,23 @@ func (controller *KeySendController) MultiKeySend(c echo.Context) error {
|
|||||||
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
|
return c.JSON(http.StatusBadRequest, responses.BadArgumentsError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
totalAmount := func(keysends []KeySendRequestBody) int64 { var total int64; for _, keysend := range keysends { total += keysend.Amount }; return total }(reqBody.Keysends)
|
||||||
|
syntheticPayReq := &lnd.LNPayReq{
|
||||||
|
PayReq: &lnrpc.PayReq{
|
||||||
|
NumSatoshis: totalAmount,
|
||||||
|
},
|
||||||
|
Keysend: true,
|
||||||
|
}
|
||||||
|
resp, err := controller.svc.CheckPaymentAllowed(context.Background(), syntheticPayReq, userID)
|
||||||
|
if resp != nil {
|
||||||
|
c.Logger().Errorf("User does not have enough balance user_id:%v amount:%v", userID, syntheticPayReq.PayReq.NumSatoshis)
|
||||||
|
return c.JSON(resp.HttpStatusCode, resp)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
errResp := responses.GeneralServerError
|
||||||
|
c.Logger().Errorf("Failed to send keysend: %s", errResp.Message)
|
||||||
|
return c.JSON(errResp.HttpStatusCode, errResp)
|
||||||
|
}
|
||||||
result := &MultiKeySendResponseBody{
|
result := &MultiKeySendResponseBody{
|
||||||
Keysends: []KeySendResult{},
|
Keysends: []KeySendResult{},
|
||||||
}
|
}
|
||||||
@@ -172,15 +204,6 @@ func (controller *KeySendController) SingleKeySend(ctx context.Context, reqBody
|
|||||||
HttpStatusCode: 400,
|
HttpStatusCode: 400,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
resp, err := controller.svc.CheckPaymentAllowed(ctx, lnPayReq, userID)
|
|
||||||
if err != nil {
|
|
||||||
controller.svc.Logger.Error(err)
|
|
||||||
return nil, &responses.GeneralServerError
|
|
||||||
}
|
|
||||||
if resp != nil {
|
|
||||||
controller.svc.Logger.Errorf("User does not have enough balance user_id:%v amount:%v", userID, lnPayReq.PayReq.NumSatoshis)
|
|
||||||
return nil, resp
|
|
||||||
}
|
|
||||||
invoice, err := controller.svc.AddOutgoingInvoice(ctx, userID, "", lnPayReq)
|
invoice, err := controller.svc.AddOutgoingInvoice(ctx, userID, "", lnPayReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
controller.svc.Logger.Error(err)
|
controller.svc.Logger.Error(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user