diff --git a/backend/mpc-system/services/service-party-app/electron/main.ts b/backend/mpc-system/services/service-party-app/electron/main.ts index 7b981e61..35d0c941 100644 --- a/backend/mpc-system/services/service-party-app/electron/main.ts +++ b/backend/mpc-system/services/service-party-app/electron/main.ts @@ -420,20 +420,35 @@ async function handleSessionStart(event: { keygenInProgressSessionId = event.sessionId; // 从事件中更新参与者列表(如果事件包含完整列表) + // 注意:activeKeygenSession.participants 可能已经包含正确的 partyIndex(从 checkAndTriggerKeygen 更新) + // 只有当事件来自 session_started 事件时才需要重新构建 if (event.selectedParties && event.selectedParties.length > 0) { const myPartyId = grpcClient?.getPartyId(); const updatedParticipants: Array<{ partyId: string; partyIndex: number; name: string }> = []; - event.selectedParties.forEach((partyId, index) => { - // 查找已有的参与者信息 + event.selectedParties.forEach((partyId) => { + // 查找已有的参与者信息(优先使用已有的 partyIndex) const existing = activeKeygenSession!.participants.find(p => p.partyId === partyId); - updatedParticipants.push({ - partyId: partyId, - partyIndex: index, - name: existing?.name || (partyId === myPartyId ? '我' : `参与方 ${index + 1}`), - }); + if (existing) { + // 保留已有的 partyIndex + updatedParticipants.push({ + partyId: partyId, + partyIndex: existing.partyIndex, + name: existing.name || (partyId === myPartyId ? '我' : `参与方 ${existing.partyIndex + 1}`), + }); + } else { + // 找不到已有信息,这不应该发生 + debugLog.warn('main', `Party ${partyId} not found in existing participants, using fallback index`); + updatedParticipants.push({ + partyId: partyId, + partyIndex: updatedParticipants.length, + name: partyId === myPartyId ? '我' : `参与方 ${updatedParticipants.length + 1}`, + }); + } }); + // 按 partyIndex 排序 + updatedParticipants.sort((a, b) => a.partyIndex - b.partyIndex); activeKeygenSession.participants = updatedParticipants; // 更新自己的 partyIndex