dkforest

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

commit a3fd322f2b4ac77c8c60366a03156df3953eeb32
parent bb49a83653aa6dcf651488610cad0a39036cade5
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri,  8 Dec 2023 06:43:01 -0500

cleanup

Diffstat:
Mpkg/web/handlers/poker/events.go | 1-
Mpkg/web/handlers/poker/poker.go | 33+++++++++++++++++++--------------
2 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/pkg/web/handlers/poker/events.go b/pkg/web/handlers/poker/events.go @@ -60,5 +60,4 @@ type PokerSeatTakenEvent struct { } type PokerSeatLeftEvent struct { - Idx int } diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -281,6 +281,23 @@ func (g *PokerGame) incrDealerIdx() { g.underTheGunIdx = (int(dealerIdx) + 3) % nbPlayers } +func (g *PokerGame) UnSitPlayer(authUser *database.User) error { + found := false + g.PlayersMtx.Lock() + for i, p := range g.Players { + if p != nil && p.Username == authUser.Username.String() { + g.Players[i] = nil + found = true + break + } + } + g.PlayersMtx.Unlock() + if !found { + return errors.New("player seat not found") + } + return nil +} + func (g *PokerGame) SitPlayer(authUser *database.User, pos int) error { g.PlayersMtx.Lock() defer g.PlayersMtx.Unlock() @@ -1026,21 +1043,9 @@ func PokerUnSitHandler(c echo.Context) error { return c.NoContent(http.StatusNotFound) } if c.Request().Method == http.MethodPost { - var idx int - found := false - g.PlayersMtx.Lock() - for i, p := range g.Players { - if p != nil && p.Username == authUser.Username.String() { - g.Players[i] = nil - idx = i - found = true - break - } - } - g.PlayersMtx.Unlock() - if found { + if err := g.UnSitPlayer(authUser); err == nil { myTopic := "room_" + roomID - PokerPubSub.Pub(myTopic, PokerSeatLeftEvent{Idx: idx + 1}) + PokerPubSub.Pub(myTopic, PokerSeatLeftEvent{}) newLogEvent(g, roomLogsTopic, fmt.Sprintf("%s un-sit", authUser.Username.String())) } }