'use client'; import { useEffect, useState } from 'react'; import { useRouter, useParams } from 'next/navigation'; import { motion } from 'framer-motion'; import { ArrowLeft, Star, Zap, CircleCheck as CheckCircle, Trophy } from 'lucide-react'; import * as Icons from 'lucide-react'; import useStore from '@/lib/store'; import CosmicCard from '@/components/ui/cosmic-card'; import MissionCompleteDialog from '@/components/ui/mission-complete-dialog'; import { toast } from 'sonner'; export default function MissionDetailPage() { const params = useParams(); const router = useRouter(); const { user, missions, completeMission } = useStore(); const [isCompleting, setIsCompleting] = useState(false); const [showReward, setShowReward] = useState(false); const [showDialog, setShowDialog] = useState(false); const mission = missions.find((m) => m.id === parseInt(params.id)); useEffect(() => { if (!user) { router.push('/login'); } }, [user, router]); if (!user || !mission) { return null; } const Icon = Icons[mission.icon] || Icons.Target; const isCompleted = mission.status === 'completed'; const handleCompleteMission = async () => { if (isCompleted) return; setIsCompleting(true); setTimeout(() => { completeMission(mission.id); setIsCompleting(false); setShowReward(true); setShowDialog(true); setTimeout(() => { setShowDialog(false); setTimeout(() => { router.push('/missions'); }, 500); }, 4000); }, 1500); }; return (
{isCompleted ? ( ) : ( )}

{mission.title}

{isCompleted && ( Завершено )}
{mission.category}

Описание

{mission.description}

Требования

Требуемый ранг: {mission.requiredRank}

Награды

Опыт

+{mission.experienceReward}

Мана

+{mission.manaReward}

{mission.skills && mission.skills.length > 0 && (

Прокачиваемые навыки:

{mission.skills.map((skill) => ( +{skill.value} уровня ))}
)}
{!isCompleted && ( {isCompleting ? 'Выполняется...' : 'Выполнить миссию'} )}
setShowDialog(false)} />
); }