From cd63643ba47de2ed49d5c58b574593d7b2bd0066 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 31 Dec 2025 02:09:18 -0800 Subject: [PATCH] fix(account): exclude failed sessions when looking up sign session by invite code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When multiple sign sessions share the same invite code (due to retries), the query now: 1. Excludes failed sessions (status != 'failed') 2. Orders by created_at DESC to get the most recent session 3. Limits to 1 result This prevents participants from seeing an old failed session's status when they look up the invite code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../account/adapters/input/http/co_managed_handler.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/mpc-system/services/account/adapters/input/http/co_managed_handler.go b/backend/mpc-system/services/account/adapters/input/http/co_managed_handler.go index 819f0f13..6e19b4c6 100644 --- a/backend/mpc-system/services/account/adapters/input/http/co_managed_handler.go +++ b/backend/mpc-system/services/account/adapters/input/http/co_managed_handler.go @@ -691,7 +691,9 @@ func (h *CoManagedHTTPHandler) GetSignSessionByInviteCode(c *gin.Context) { SELECT id, COALESCE(wallet_name, ''), COALESCE(keygen_session_id::text, ''), threshold_n, threshold_t, status, expires_at, COALESCE(message_hash, '') FROM mpc_sessions - WHERE invite_code = $1 AND session_type = 'sign' + WHERE invite_code = $1 AND session_type = 'sign' AND status != 'failed' + ORDER BY created_at DESC + LIMIT 1 `, inviteCode).Scan(&sessionID, &walletName, &keygenSessionID, &thresholdN, &thresholdT, &status, &expiresAt, &messageHash) if err != nil {