dkforest

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

commit f0d0fe9094853b0801f0c9bf9efda61731160083
parent 76c5fd3cf8b279c6faef062122278315e423a68a
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 11 Dec 2023 20:53:59 -0500

fix auto unsit

Diffstat:
Mpkg/web/handlers/poker/poker.go | 28+++++++---------------------
1 file changed, 7 insertions(+), 21 deletions(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -301,22 +301,17 @@ func (g *PokerGame) incrDealerIdx() { } func (g *PokerGame) UnSitPlayer(db *database.DkfDB, roomID, playerUsername string) error { - var player *PokerStandingPlayer g.PlayersMtx.RLock() - for _, p := range g.Players { + defer g.PlayersMtx.RUnlock() + for idx, p := range g.Players { if p != nil && p.Username == playerUsername { - player = p - break + return g.UnSitPlayer1(db, roomID, p, idx) } } - g.PlayersMtx.RUnlock() - if player != nil { - return g.UnSitPlayer1(db, roomID, player) - } return nil } -func (g *PokerGame) UnSitPlayer1(db *database.DkfDB, roomID string, player *PokerStandingPlayer) error { +func (g *PokerGame) UnSitPlayer1(db *database.DkfDB, roomID string, player *PokerStandingPlayer, idx int) error { roomTopic := "room_" + roomID user, err := db.GetUserByUsername(database.Username(player.Username)) @@ -344,16 +339,7 @@ func (g *PokerGame) UnSitPlayer1(db *database.DkfDB, roomID string, player *Poke player.CardsMtx.RUnlock() } } - - g.PlayersMtx.Lock() - for idx, p := range g.Players { - if p != nil && p.Username == player.Username { - g.Players[idx] = nil - break - } - } - g.PlayersMtx.Unlock() - + g.Players[idx] = nil return nil } @@ -869,9 +855,9 @@ END: time.Sleep(MinTimeAfterGame * time.Second) // Auto unsit inactive players - for _, p := range g.Players { + for idx, p := range g.Players { if p != nil && p.LastActionTS.Before(g.Ongoing.CreatedAt) { - if err := g.UnSitPlayer1(db, roomID, p); err == nil { + if err := g.UnSitPlayer1(db, roomID, p, idx); err == nil { PokerPubSub.Pub(roomTopic, PokerSeatLeftEvent{}) newLogEvent(g, roomLogsTopic, fmt.Sprintf("%s auto un-sit", p.Username)) }