fix: resolve nil pubsub preventing live game updates
All checks were successful
Deploy c4 / deploy (push) Successful in 45s

v.PubSub() was captured at startup before v.Start() initialized NATS,
so both stores held nil and notify() silently no-oped. Replace the
PubSub interface with a callback that evaluates v.PubSub() lazily at
call time.
This commit is contained in:
Ryan Hamamura
2026-02-20 12:37:28 -10:00
parent 91b5f2b80c
commit e68e4b48f5
3 changed files with 18 additions and 22 deletions

View File

@@ -6,10 +6,6 @@ import (
"sync"
)
type PubSub interface {
Publish(subject string, data []byte) error
}
type PlayerSession struct {
Player *Player
}
@@ -25,8 +21,8 @@ type Persister interface {
type GameStore struct {
games map[string]*GameInstance
gamesMu sync.RWMutex
persister Persister
pubsub PubSub
persister Persister
notifyFunc func(gameID string)
}
func NewGameStore() *GameStore {
@@ -39,14 +35,14 @@ func (gs *GameStore) SetPersister(p Persister) {
gs.persister = p
}
func (gs *GameStore) SetPubSub(ps PubSub) {
gs.pubsub = ps
func (gs *GameStore) SetNotifyFunc(f func(gameID string)) {
gs.notifyFunc = f
}
func (gs *GameStore) makeNotify(gameID string) func() {
return func() {
if gs.pubsub != nil {
gs.pubsub.Publish("game."+gameID, nil)
if gs.notifyFunc != nil {
gs.notifyFunc(gameID)
}
}
}