dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit b3613ca07158d9f302d47850938fc21f67a35728
parent 80d28ed9212bb55236fb28ae94121f00fff500ff
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 18 Dec 2023 16:08:10 -0500

cleanup

Diffstat:
Mpkg/web/handlers/handlers.go | 48+++++++++++++++++++++---------------------------
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())