dkforest

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

commit d3290893074763196b6a30b771434617ed2bb33c
parent b39f94e09c3c9e1f26c3d257635d704e5483a19c
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 24 Dec 2023 16:56:35 -0500

cleanup

Diffstat:
Mpkg/web/handlers/poker.go | 4++--
Mpkg/web/handlers/poker/poker.go | 12++++++++++--
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