From e13e1e7a7d7283f3f5930b240165be75de0985dd Mon Sep 17 00:00:00 2001 From: tolelom <98kimsungmin@naver.com> Date: Tue, 24 Mar 2026 10:27:12 +0900 Subject: [PATCH] fix: prevent duplicate SaveRun calls on game over --- ui/model.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/model.go b/ui/model.go index 62ce826..53eb255 100644 --- a/ui/model.go +++ b/ui/model.go @@ -47,6 +47,7 @@ type Model struct { inputBuffer string targetCursor int moveCursor int // selected neighbor index during exploration + rankingSaved bool } func NewModel(width, height int, fingerprint string, lobby *game.Lobby, db *store.DB) Model { @@ -286,12 +287,13 @@ func (m Model) updateGame(msg tea.Msg) (tea.Model, tea.Cmd) { } if m.gameState.GameOver { - if m.store != nil { + if m.store != nil && !m.rankingSaved { score := 0 for _, p := range m.gameState.Players { score += p.Gold } m.store.SaveRun(m.playerName, m.gameState.FloorNum, score) + m.rankingSaved = true } m.screen = screenResult return m, nil @@ -408,6 +410,7 @@ func (m Model) updateResult(msg tea.Msg) (tea.Model, tea.Cmd) { if key, ok := msg.(tea.KeyMsg); ok { if isEnter(key) { m.screen = screenLobby + m.rankingSaved = false m = m.withRefreshedLobby() } else if isQuit(key) { return m, tea.Quit