@@ -76,18 +76,48 @@ export const mergeSolveStatus = (
7676 } ;
7777 }
7878 // assert コンテスト情報あり
79+
7980 if ( ! firstSolvedProblem ) {
80- // 未 AC
81- return {
82- ...problem ,
83- Contest : extendedContest ,
84- DateNum,
85- SolveStatus : ProblemSolveStatus . Trying ,
86- Difficulty,
87- Augmented,
88- Index : problemIndexMap . get ( problem . ProblemId ) ,
89- } ;
81+ if ( ! solvedProblem ) {
82+ // 未 AC
83+ return {
84+ ...problem ,
85+ Contest : extendedContest ,
86+ DateNum,
87+ SolveStatus : ProblemSolveStatus . Trying ,
88+ Difficulty,
89+ Augmented,
90+ Index : problemIndexMap . get ( problem . ProblemId ) ,
91+ } ;
92+ } else {
93+ // 何故か firstSolvedProblem のほうに入っていないことがあるので polyfill
94+ // firstSolvedProblem の代わりに solvedProblem を使う
95+ const SolveDate = solvedProblem ?. Date ;
96+ const SolveDateNum = SolveDate ? Date . parse ( SolveDate ) : undefined ;
97+ const FirstSolveDate = solvedProblem . Date ;
98+ const FirstSolveDateNum = Date . parse ( FirstSolveDate ) ;
99+ const SolveStatus =
100+ FirstSolveDateNum > extendedContest . EndDateNum
101+ ? ProblemSolveStatus . Solved
102+ : FirstSolveDateNum >= extendedContest . DateNum
103+ ? ProblemSolveStatus . Intime
104+ : ProblemSolveStatus . BeforeContest ;
105+ return {
106+ ...problem ,
107+ Contest : extendedContest ,
108+ DateNum,
109+ SolveDate,
110+ SolveDateNum,
111+ FirstSolveDate,
112+ FirstSolveDateNum,
113+ SolveStatus,
114+ Difficulty,
115+ Augmented,
116+ Index : problemIndexMap . get ( problem . ProblemId ) ,
117+ } ;
118+ }
90119 }
120+
91121 // assert AC 済み
92122 const SolveDate = solvedProblem ?. Date ;
93123 const SolveDateNum = SolveDate ? Date . parse ( SolveDate ) : undefined ;
0 commit comments