diff --git a/src/pages/submissions/SubmissionsPage.tsx b/src/pages/submissions/SubmissionsPage.tsx
index 136182a..58149fd 100644
--- a/src/pages/submissions/SubmissionsPage.tsx
+++ b/src/pages/submissions/SubmissionsPage.tsx
@@ -76,13 +76,25 @@ export const SubmissionsPage: React.FC = () => {
const participants: ActiveParticipant[] = stats.activeParticipants || []
const submissionsList: ChallengeSubmission[] = submissions || []
+ const normalizedSearchQuery = (searchQuery ?? '').toLowerCase()
+
const filteredSubmissions = submissionsList.filter((submission) => {
- const user = submission.user as ChallengeUser
- const task = submission.task as ChallengeTask
+ const rawUser = submission.user as ChallengeUser | string | undefined
+ const rawTask = submission.task as ChallengeTask | string | undefined
+
+ const nickname =
+ rawUser && typeof rawUser === 'object' && 'nickname' in rawUser
+ ? (rawUser.nickname ?? '')
+ : ''
+
+ const title =
+ rawTask && typeof rawTask === 'object' && 'title' in rawTask
+ ? (rawTask.title ?? '')
+ : ''
const matchesSearch =
- user.nickname.toLowerCase().includes(searchQuery.toLowerCase()) ||
- task.title.toLowerCase().includes(searchQuery.toLowerCase())
+ nickname.toLowerCase().includes(normalizedSearchQuery) ||
+ title.toLowerCase().includes(normalizedSearchQuery)
const matchesStatus = statusFilter === 'all' || submission.status === statusFilter
@@ -337,13 +349,27 @@ export const SubmissionsPage: React.FC = () => {
{filteredSubmissions.map((submission) => {
- const user = submission.user as ChallengeUser
- const task = submission.task as ChallengeTask
+ const rawUser = submission.user as ChallengeUser | string | undefined
+ const rawTask = submission.task as ChallengeTask | string | undefined
+
+ const nickname =
+ rawUser && typeof rawUser === 'object' && 'nickname' in rawUser
+ ? (rawUser.nickname ?? '')
+ : typeof rawUser === 'string'
+ ? rawUser
+ : ''
+
+ const title =
+ rawTask && typeof rawTask === 'object' && 'title' in rawTask
+ ? (rawTask.title ?? '')
+ : typeof rawTask === 'string'
+ ? rawTask
+ : ''
return (
- {user.nickname}
- {task.title}
+ {nickname}
+ {title}
@@ -405,8 +431,27 @@ const SubmissionDetailsModal: React.FC = ({
if (!submission) return null
- const user = submission.user as ChallengeUser
- const task = submission.task as ChallengeTask
+ const rawUser = submission.user as ChallengeUser | string | undefined
+ const rawTask = submission.task as ChallengeTask | string | undefined
+
+ const userNickname =
+ rawUser && typeof rawUser === 'object' && 'nickname' in rawUser
+ ? (rawUser.nickname ?? '')
+ : typeof rawUser === 'string'
+ ? rawUser
+ : ''
+
+ const taskTitle =
+ rawTask && typeof rawTask === 'object' && 'title' in rawTask
+ ? (rawTask.title ?? '')
+ : typeof rawTask === 'string'
+ ? rawTask
+ : ''
+
+ const taskDescription =
+ rawTask && typeof rawTask === 'object' && 'description' in rawTask
+ ? (rawTask.description ?? '')
+ : ''
const formatDate = (dateStr: string) => {
return new Date(dateStr).toLocaleString('ru-RU', {
@@ -441,7 +486,7 @@ const SubmissionDetailsModal: React.FC = ({
{t('challenge.admin.submissions.details.user')}
- {user.nickname}
+ {userNickname}
@@ -471,7 +516,7 @@ const SubmissionDetailsModal: React.FC = ({
{/* Task */}
- {t('challenge.admin.submissions.details.task')} {task.title}
+ {t('challenge.admin.submissions.details.task')} {taskTitle}
= ({
maxH="200px"
overflowY="auto"
>
- {task.description}
+ {taskDescription}