This commit is contained in:
Виталий Лавшонок
2025-11-06 18:54:06 +03:00
parent 6c92c789d0
commit 046e5d1693

View File

@@ -8,7 +8,7 @@ export interface Submit {
language: string; language: string;
languageVersion: string; languageVersion: string;
sourceCode: string; sourceCode: string;
contestId: number | null; contestId?: number;
} }
export interface Solution { export interface Solution {
@@ -30,8 +30,8 @@ export interface MissionSubmit {
id: number; id: number;
userId: number; userId: number;
solution: Solution; solution: Solution;
contestId: number | null; contestId?: number;
contestName: string | null; contestName?: string;
sourceType: string; sourceType: string;
} }
@@ -40,7 +40,7 @@ interface SubmitState {
submitsById: Record<number, MissionSubmit[]>; // ✅ добавлено submitsById: Record<number, MissionSubmit[]>; // ✅ добавлено
currentSubmit?: Submit; currentSubmit?: Submit;
status: 'idle' | 'loading' | 'successful' | 'failed'; status: 'idle' | 'loading' | 'successful' | 'failed';
error: string | null; error?: string;
} }
// Начальное состояние // Начальное состояние
@@ -49,7 +49,7 @@ const initialState: SubmitState = {
submitsById: {}, // ✅ инициализация submitsById: {}, // ✅ инициализация
currentSubmit: undefined, currentSubmit: undefined,
status: 'idle', status: 'idle',
error: null, error: undefined,
}; };
// AsyncThunk: Отправка решения // AsyncThunk: Отправка решения
@@ -123,7 +123,7 @@ const submitSlice = createSlice({
clearCurrentSubmit: (state) => { clearCurrentSubmit: (state) => {
state.currentSubmit = undefined; state.currentSubmit = undefined;
state.status = 'idle'; state.status = 'idle';
state.error = null; state.error = undefined;
}, },
clearSubmitsByMission: (state, action: PayloadAction<number>) => { clearSubmitsByMission: (state, action: PayloadAction<number>) => {
delete state.submitsById[action.payload]; delete state.submitsById[action.payload];
@@ -133,7 +133,7 @@ const submitSlice = createSlice({
// Отправка решения // Отправка решения
builder.addCase(submitMission.pending, (state) => { builder.addCase(submitMission.pending, (state) => {
state.status = 'loading'; state.status = 'loading';
state.error = null; state.error = undefined;
}); });
builder.addCase( builder.addCase(
submitMission.fulfilled, submitMission.fulfilled,
@@ -153,7 +153,7 @@ const submitSlice = createSlice({
// Получить все свои отправки // Получить все свои отправки
builder.addCase(fetchMySubmits.pending, (state) => { builder.addCase(fetchMySubmits.pending, (state) => {
state.status = 'loading'; state.status = 'loading';
state.error = null; state.error = undefined;
}); });
builder.addCase( builder.addCase(
fetchMySubmits.fulfilled, fetchMySubmits.fulfilled,
@@ -173,7 +173,7 @@ const submitSlice = createSlice({
// Получить отправку по ID // Получить отправку по ID
builder.addCase(fetchSubmitById.pending, (state) => { builder.addCase(fetchSubmitById.pending, (state) => {
state.status = 'loading'; state.status = 'loading';
state.error = null; state.error = undefined;
}); });
builder.addCase( builder.addCase(
fetchSubmitById.fulfilled, fetchSubmitById.fulfilled,
@@ -193,7 +193,7 @@ const submitSlice = createSlice({
// ✅ Получить отправки по миссии // ✅ Получить отправки по миссии
builder.addCase(fetchMySubmitsByMission.pending, (state) => { builder.addCase(fetchMySubmitsByMission.pending, (state) => {
state.status = 'loading'; state.status = 'loading';
state.error = null; state.error = undefined;
}); });
builder.addCase( builder.addCase(
fetchMySubmitsByMission.fulfilled, fetchMySubmitsByMission.fulfilled,