Add dispute system
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { useState, useEffect, useCallback, useRef, useImperativeHandle, forwardRef } from 'react'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { feedApi } from '@/api'
|
||||
import type { Activity, ActivityType } from '@/types'
|
||||
import { Loader2, ChevronDown, Bell } from 'lucide-react'
|
||||
import { Loader2, ChevronDown, Bell, ExternalLink } from 'lucide-react'
|
||||
import {
|
||||
formatRelativeTime,
|
||||
getActivityIcon,
|
||||
@@ -169,12 +170,18 @@ interface ActivityItemProps {
|
||||
}
|
||||
|
||||
function ActivityItem({ activity }: ActivityItemProps) {
|
||||
const navigate = useNavigate()
|
||||
const Icon = getActivityIcon(activity.type)
|
||||
const iconColor = getActivityColor(activity.type)
|
||||
const bgClass = getActivityBgClass(activity.type)
|
||||
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
|
||||
: null
|
||||
|
||||
if (isEvent) {
|
||||
return (
|
||||
<div className={`px-4 py-3 ${bgClass} border-l-2 ${activity.type === 'event_start' ? 'border-l-yellow-500' : 'border-l-gray-600'}`}>
|
||||
@@ -240,6 +247,16 @@ function ActivityItem({ activity }: ActivityItemProps) {
|
||||
{extra}
|
||||
</div>
|
||||
)}
|
||||
{/* Details button 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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user