commit f0d0fe9094853b0801f0c9bf9efda61731160083
parent 76c5fd3cf8b279c6faef062122278315e423a68a
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 11 Dec 2023 20:53:59 -0500
fix auto unsit
Diffstat:
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))
}