commit d3290893074763196b6a30b771434617ed2bb33c
parent b39f94e09c3c9e1f26c3d257635d704e5483a19c
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 24 Dec 2023 16:56:35 -0500
cleanup
Diffstat:
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/pkg/web/handlers/poker.go b/pkg/web/handlers/poker.go
@@ -242,7 +242,7 @@ func doJoinTable(db *database.DkfDB, pokerTableSlug string, playerBuyIn database
}
g.Players.Lock()
defer g.Players.Unlock()
- if g.IsSeated(userID) {
+ if g.IsSeatedUnsafe(userID) {
return errors.New("cannot buy-in while seated")
}
pokerTable, err := tx.GetPokerTableBySlug(pokerTableSlug)
@@ -295,7 +295,7 @@ func doCashOut(db *database.DkfDB, pokerTableSlug string, userID database.UserID
}
g.Players.Lock()
defer g.Players.Unlock()
- if g.IsSeated(userID) {
+ if g.IsSeatedUnsafe(userID) {
return errors.New("cannot cash out while seated")
}
pokerTable, err := tx.GetPokerTableBySlug(pokerTableSlug)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -509,12 +509,16 @@ func (g *ongoingGame) countAlivePlayers() (playerAlive int) {
return
}
-// IsSeated returns either or not a userID is seated at the table.
+// IsSeatedUnsafe returns either or not a userID is seated at the table.
// WARN: The caller of this function needs to ensure that g.Players has been Lock/RLock
-func (g *PokerGame) IsSeated(userID database.UserID) bool {
+func (g *PokerGame) IsSeatedUnsafe(userID database.UserID) bool {
return isSeated(*g.Players.Val(), userID)
}
+func (g *PokerGame) IsSeated(userID database.UserID) bool {
+ return isSeated(g.Players.Get(), userID)
+}
+
func (g *PokerGame) isSeated(userID database.UserID) (out bool) {
g.Players.RWith(func(gPlayers seatedPlayers) { out = isSeated(gPlayers, userID) })
return
@@ -1612,6 +1616,10 @@ func (g *PokerGame) Deal(userID database.UserID) {
roomTopic := g.roomID.Topic()
roomUserTopic := g.roomID.UserTopic(userID)
eligiblePlayers := g.getEligibles()
+ if !g.IsSeated(userID) {
+ PokerPubSub.Pub(roomUserTopic, ErrorMsgEvent{Message: "you need to be seated"})
+ return
+ }
if len(eligiblePlayers) < 2 {
PokerPubSub.Pub(roomUserTopic, ErrorMsgEvent{Message: "need at least 2 players"})
return