Fix dispute

This commit is contained in:
2025-12-16 02:35:59 +07:00
parent f57a2ba9ea
commit e32df4d95e
3 changed files with 69 additions and 24 deletions

View File

@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback, useRef, useImperativeHandle, forwardR
import { useNavigate } from 'react-router-dom'
import { feedApi } from '@/api'
import type { Activity, ActivityType } from '@/types'
import { Loader2, ChevronDown, Bell, ExternalLink } from 'lucide-react'
import { Loader2, ChevronDown, Bell, ExternalLink, AlertTriangle } from 'lucide-react'
import {
formatRelativeTime,
getActivityIcon,
@@ -177,9 +177,13 @@ function ActivityItem({ activity }: ActivityItemProps) {
const isEvent = isEventActivity(activity.type)
const { title, details, extra } = formatActivityMessage(activity)
// Get assignment_id for complete activities
const assignmentId = activity.type === 'complete' && activity.data
? (activity.data as { assignment_id?: number }).assignment_id
// Get assignment_id and dispute status for complete activities
const activityData = activity.data as { assignment_id?: number; dispute_status?: string } | null
const assignmentId = activity.type === 'complete' && activityData?.assignment_id
? activityData.assignment_id
: null
const disputeStatus = activity.type === 'complete' && activityData?.dispute_status
? activityData.dispute_status
: null
if (isEvent) {
@@ -247,15 +251,29 @@ function ActivityItem({ activity }: ActivityItemProps) {
{extra}
</div>
)}
{/* Details button for complete activities */}
{/* Details button and dispute indicator for complete activities */}
{assignmentId && (
<button
onClick={() => navigate(`/assignments/${assignmentId}`)}
className="mt-2 text-xs text-primary-400 hover:text-primary-300 flex items-center gap-1"
>
<ExternalLink className="w-3 h-3" />
Детали
</button>
<div className="flex items-center gap-3 mt-2">
<button
onClick={() => navigate(`/assignments/${assignmentId}`)}
className="text-xs text-primary-400 hover:text-primary-300 flex items-center gap-1"
>
<ExternalLink className="w-3 h-3" />
Детали
</button>
{disputeStatus === 'open' && (
<span className="text-xs text-orange-400 flex items-center gap-1">
<AlertTriangle className="w-3 h-3" />
Оспаривается
</span>
)}
{disputeStatus === 'valid' && (
<span className="text-xs text-red-400 flex items-center gap-1">
<AlertTriangle className="w-3 h-3" />
Отклонено
</span>
)}
</div>
)}
</div>
</div>