This commit is contained in:
Виталий Лавшонок
2025-11-04 22:45:03 +03:00
parent 42da6684ba
commit 994954c817
11 changed files with 197 additions and 109 deletions

View File

@@ -18,7 +18,6 @@ const Contest = () => {
if (contestIdNumber === null) {
return <Navigate to="/home/contests" replace />;
}
const dispatch = useAppDispatch();
const contest = useAppSelector((state) => state.contests.selectedContest);

View File

@@ -1,6 +1,7 @@
import { cn } from '../../../lib/cn';
import { IconError, IconSuccess } from '../../../assets/icons/missions';
import { useNavigate } from 'react-router-dom';
import { useLocation } from 'react-router-dom';
export interface MissionItemProps {
id: number;
@@ -31,6 +32,8 @@ const MissionItem: React.FC<MissionItemProps> = ({
status,
}) => {
const navigate = useNavigate();
const location = useLocation();
const path = location.pathname + location.search;
return (
<div
@@ -45,7 +48,7 @@ const MissionItem: React.FC<MissionItemProps> = ({
'cursor-pointer brightness-100 hover:brightness-125 transition-all duration-300',
)}
onClick={() => {
navigate(`/mission/${id}`);
navigate(`/mission/${id}?back=${path}`);
}}
>
<div className="text-[18px] font-bold">#{id}</div>

View File

@@ -28,8 +28,10 @@ const ContestMissions: FC<ContestMissionsProps> = ({ contest }) => {
<div className="w-full">
{contest.missions.map((v, i) => (
<MissionItem
id={v.missionId}
id={v.id}
name={v.name}
timeLimit={v.timeLimitMilliseconds}
memoryLimit={v.memoryLimitBytes}
type={i % 2 ? 'second' : 'first'}
/>
))}

View File

@@ -9,9 +9,10 @@ import { useNavigate } from 'react-router-dom';
interface HeaderProps {
missionId: number;
back?: string;
}
const Header: React.FC<HeaderProps> = ({ missionId }) => {
const Header: React.FC<HeaderProps> = ({ missionId, back }) => {
const navigate = useNavigate();
return (
<header className="w-full h-[60px] flex items-center px-4 gap-[20px]">
@@ -29,7 +30,8 @@ const Header: React.FC<HeaderProps> = ({ missionId }) => {
alt="back"
className="h-[24px] w-[24px] cursor-pointer"
onClick={() => {
navigate('/home/missions');
if (back) navigate(back);
else navigate('/home/missions');
}}
/>
@@ -39,7 +41,10 @@ const Header: React.FC<HeaderProps> = ({ missionId }) => {
alt="back"
className="h-[24px] w-[24px] cursor-pointer"
onClick={() => {
navigate(`/mission/${missionId - 1}`);
if (missionId <= 1) return;
if (back)
navigate(`/mission/${missionId - 1}?back=${back}`);
else navigate(`/mission/${missionId - 1}`);
}}
/>
<span>{missionId}</span>
@@ -48,7 +53,9 @@ const Header: React.FC<HeaderProps> = ({ missionId }) => {
alt="back"
className="h-[24px] w-[24px] cursor-pointer"
onClick={() => {
navigate(`/mission/${missionId + 1}`);
if (back)
navigate(`/mission/${missionId + 1}?back=${back}`);
else navigate(`/mission/${missionId + 1}`);
}}
/>
</div>