Skip to content

Commit 6c313c3

Browse files
WangYuTenggclaude
andcommitted
fix(student): show graded submissions correctly in course list
submissionStatus 'graded' and 'grading' fell through to "Start" button, which tried to create a new attempt instead of opening the existing submission. Add badges + route them through the same submission view as submitted/late. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e3acf15 commit 6c313c3

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/client/features/student-course/components/AssignmentsList.tsx

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ type AssignmentsListProps = {
99
export function AssignmentsList({ assignments }: AssignmentsListProps) {
1010
const navigate = useNavigate();
1111

12+
const isFinalStatus = (status: StudentAssignment['submissionStatus']) =>
13+
status === 'submitted' || status === 'late' || status === 'grading' || status === 'graded';
14+
1215
const startAssignment = (assignment: StudentAssignment) => {
13-
// If already submitted/late, navigate to submission review instead of starting a new attempt
14-
if (
15-
(assignment.submissionStatus === 'submitted' || assignment.submissionStatus === 'late') &&
16-
assignment.submissionId
17-
) {
16+
// If already submitted (or beyond), navigate to submission review instead of starting a new attempt
17+
if (isFinalStatus(assignment.submissionStatus) && assignment.submissionId) {
1818
navigate({
1919
to: '/student/submissions/$submissionId',
2020
params: { submissionId: assignment.submissionId },
@@ -62,6 +62,16 @@ export function AssignmentsList({ assignments }: AssignmentsListProps) {
6262
Late
6363
</span>
6464
)}
65+
{assignment.submissionStatus === 'grading' && (
66+
<span className="px-2 py-1 text-xs font-medium bg-blue-100 text-blue-800 rounded">
67+
Grading
68+
</span>
69+
)}
70+
{assignment.submissionStatus === 'graded' && (
71+
<span className="px-2 py-1 text-xs font-medium bg-purple-100 text-purple-800 rounded">
72+
Graded
73+
</span>
74+
)}
6575
</div>
6676
<p className="text-gray-600 mt-1">{assignment.description}</p>
6777
<div className="mt-2 flex gap-4 text-sm text-gray-500">
@@ -89,7 +99,7 @@ export function AssignmentsList({ assignments }: AssignmentsListProps) {
8999
onClick={() => startAssignment(assignment)}
90100
className="ml-4 bg-blue-500 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded"
91101
>
92-
{assignment.submissionStatus === 'submitted' || assignment.submissionStatus === 'late' ? 'View' : assignment.submissionStatus === 'draft' ? 'Resume' : 'Start'}
102+
{isFinalStatus(assignment.submissionStatus) ? 'View' : assignment.submissionStatus === 'draft' ? 'Resume' : 'Start'}
93103
</button>
94104
</div>
95105
</div>

src/client/features/student-course/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export type StudentAssignment = {
1616
dueDate: string | null;
1717
maxAttempts: number | null;
1818
mcqPenaltyPerWrongSelection: number;
19-
submissionStatus?: 'draft' | 'submitted' | 'late' | null;
19+
submissionStatus?: 'draft' | 'submitted' | 'late' | 'grading' | 'graded' | null;
2020
submissionId?: string | null;
2121
questionCount: number;
2222
questionTypeCounts: QuestionTypeCounts;

0 commit comments

Comments
 (0)