fix(service-party-app): 修复 threshold 为 undefined 导致的崩溃

问题:
- Session.tsx 直接访问 session.threshold.n 和 session.threshold.t
- 当后端返回的 session 数据中 threshold 为 undefined 时崩溃

修复:
- 添加空值检查 session.threshold?.n || 0
- 阈值信息部分添加条件渲染

Generated with Claude Code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-29 11:37:09 -08:00
parent 30ec0a1c8e
commit aa9171ce2c
1 changed files with 4 additions and 2 deletions

View File

@ -187,7 +187,7 @@ export default function Session() {
{/* 参与方列表 */} {/* 参与方列表 */}
<div className={styles.section}> <div className={styles.section}>
<h3 className={styles.sectionTitle}> <h3 className={styles.sectionTitle}>
({(session.participants || []).length} / {session.threshold.n}) ({(session.participants || []).length} / {session.threshold?.n || 0})
</h3> </h3>
<div className={styles.participantList}> <div className={styles.participantList}>
{(session.participants || []).map((participant, index) => ( {(session.participants || []).map((participant, index) => (
@ -201,7 +201,7 @@ export default function Session() {
</span> </span>
</div> </div>
))} ))}
{Array.from({ length: Math.max(0, session.threshold.n - (session.participants || []).length) }).map((_, index) => ( {Array.from({ length: Math.max(0, (session.threshold?.n || 0) - (session.participants || []).length) }).map((_, index) => (
<div key={`empty-${index}`} className={`${styles.participant} ${styles.participantEmpty}`}> <div key={`empty-${index}`} className={`${styles.participant} ${styles.participantEmpty}`}>
<div className={styles.participantInfo}> <div className={styles.participantInfo}>
<span className={styles.participantIndex}>#{(session.participants || []).length + index + 1}</span> <span className={styles.participantIndex}>#{(session.participants || []).length + index + 1}</span>
@ -214,6 +214,7 @@ export default function Session() {
</div> </div>
{/* 阈值信息 */} {/* 阈值信息 */}
{session.threshold && (
<div className={styles.section}> <div className={styles.section}>
<h3 className={styles.sectionTitle}></h3> <h3 className={styles.sectionTitle}></h3>
<div className={styles.thresholdInfo}> <div className={styles.thresholdInfo}>
@ -225,6 +226,7 @@ export default function Session() {
</span> </span>
</div> </div>
</div> </div>
)}
{/* 完成状态 */} {/* 完成状态 */}
{session.status === 'completed' && session.publicKey && ( {session.status === 'completed' && session.publicKey && (