commit b3613ca07158d9f302d47850938fc21f67a35728
parent 80d28ed9212bb55236fb28ae94121f00fff500ff
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 18 Dec 2023 16:08:10 -0500
cleanup
Diffstat:
1 file changed, 21 insertions(+), 27 deletions(-)
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -931,36 +931,30 @@ func PokerHomeHandler(c echo.Context) error {
dutils.RootAdminNotify(db, fmt.Sprintf("new withdraw %s xmr by %s", withdrawAmount.XmrStr(), authUser.Username))
- tx := db.Begin()
- xmrBalance, err := authUser.GetXmrBalance(tx)
- if err != nil {
- data.Error = err.Error()
- tx.Rollback()
- return c.Render(http.StatusOK, "poker", data)
- }
- if withdrawAmount+transactionFee > xmrBalance {
- data.Error = "not enough funds"
- tx.Rollback()
- return c.Render(http.StatusOK, "poker", data)
- }
- if err := authUser.SubXmrBalance(tx, withdrawAmount+transactionFee); err != nil {
- data.Error = err.Error()
- tx.Rollback()
- return c.Render(http.StatusOK, "poker", data)
- }
- if _, err := walletRpcClient.RelayTx(&wallet1.RequestRelayTx{Hex: res.TxMetadata}); err != nil {
- logrus.Error(err)
- data.Error = err.Error()
- tx.Rollback()
- return c.Render(http.StatusOK, "poker", data)
- }
- if _, err := tx.CreatePokerXmrTransaction(authUser.ID, res); err != nil {
- logrus.Error("failed to create poker xmr transaction", err)
+ if err := db.WithE(func(tx *database.DkfDB) error {
+ xmrBalance, err := authUser.GetXmrBalance(tx)
+ if err != nil {
+ return err
+ }
+ if withdrawAmount+transactionFee > xmrBalance {
+ return errors.New("not enough funds")
+ }
+ if err := authUser.SubXmrBalance(tx, withdrawAmount+transactionFee); err != nil {
+ return err
+ }
+ if _, err := walletRpcClient.RelayTx(&wallet1.RequestRelayTx{Hex: res.TxMetadata}); err != nil {
+ logrus.Error(err)
+ return err
+ }
+ if _, err := tx.CreatePokerXmrTransaction(authUser.ID, res); err != nil {
+ logrus.Error("failed to create poker xmr transaction", err)
+ return err
+ }
+ return nil
+ }); err != nil {
data.Error = err.Error()
- tx.Commit()
return c.Render(http.StatusOK, "poker", data)
}
- tx.Commit()
pokerWithdrawCache.Delete(authUser.ID)
return c.Redirect(http.StatusFound, c.Request().Referer())