From 0ee63f5c8cb9690904b011385f341de231962b61 Mon Sep 17 00:00:00 2001 From: Lesia Soloviova Date: Sun, 22 Feb 2026 17:42:09 +0200 Subject: [PATCH 1/2] fix(admin-quiz): disable Save button when no changes made - fix eslint imports sorting warning --- frontend/app/[locale]/admin/page.tsx | 2 +- .../app/[locale]/admin/quiz/[id]/page.tsx | 4 +- .../components/admin/quiz/CreateQuizForm.tsx | 5 +-- .../admin/quiz/DeleteQuizButton.tsx | 3 +- .../components/admin/quiz/QuestionEditor.tsx | 3 +- .../components/admin/quiz/QuizListTable.tsx | 3 +- .../admin/quiz/QuizStatusControls.tsx | 3 +- .../admin/quiz/UploadMoreQuestions.tsx | 3 +- .../components/dashboard/AchievementBadge.tsx | 38 +++++++++---------- frontend/components/home/FlipCardQA.tsx | 2 +- .../components/home/InteractiveCTAButton.tsx | 3 +- frontend/db/queries/quizzes/admin-quiz.ts | 6 +-- frontend/db/seed-questions.ts | 2 +- frontend/lib/quiz/quiz-answers-redis.ts | 2 +- 14 files changed, 38 insertions(+), 41 deletions(-) diff --git a/frontend/app/[locale]/admin/page.tsx b/frontend/app/[locale]/admin/page.tsx index 290cbd12..5f1065c7 100644 --- a/frontend/app/[locale]/admin/page.tsx +++ b/frontend/app/[locale]/admin/page.tsx @@ -1,5 +1,5 @@ -import { Metadata } from 'next'; import { FileQuestion, MessageSquare, ShoppingBag } from 'lucide-react'; +import { Metadata } from 'next'; import { Link } from '@/i18n/routing'; diff --git a/frontend/app/[locale]/admin/quiz/[id]/page.tsx b/frontend/app/[locale]/admin/quiz/[id]/page.tsx index 948e1416..f736abe9 100644 --- a/frontend/app/[locale]/admin/quiz/[id]/page.tsx +++ b/frontend/app/[locale]/admin/quiz/[id]/page.tsx @@ -2,9 +2,9 @@ import { Metadata } from 'next'; import { notFound } from 'next/navigation'; import { QuizEditorList } from '@/components/admin/quiz/QuizEditorList'; -import { UploadMoreQuestions } from '@/components/admin/quiz/UploadMoreQuestions'; -import { QuizStatusControls } from '@/components/admin/quiz/QuizStatusControls'; import { QuizMetadataEditor } from '@/components/admin/quiz/QuizMetadataEditor'; +import { QuizStatusControls } from '@/components/admin/quiz/QuizStatusControls'; +import { UploadMoreQuestions } from '@/components/admin/quiz/UploadMoreQuestions'; import { getAdminQuizFull } from '@/db/queries/quizzes/admin-quiz'; import { Link } from '@/i18n/routing'; import { issueCsrfToken } from '@/lib/security/csrf'; diff --git a/frontend/components/admin/quiz/CreateQuizForm.tsx b/frontend/components/admin/quiz/CreateQuizForm.tsx index 85df22ec..dbfffa38 100644 --- a/frontend/components/admin/quiz/CreateQuizForm.tsx +++ b/frontend/components/admin/quiz/CreateQuizForm.tsx @@ -1,12 +1,11 @@ 'use client'; -import { useState } from 'react'; - import { useRouter } from 'next/navigation'; +import { useState } from 'react'; import type { AdminCategoryItem } from '@/db/queries/categories/admin-categories'; -import type { JsonQuestion } from '@/lib/validation/admin-quiz'; import { slugify } from '@/lib/shop/slug'; +import type { JsonQuestion } from '@/lib/validation/admin-quiz'; import { InlineCategoryForm } from './InlineCategoryForm'; import { JsonUploadArea } from './JsonUploadArea'; diff --git a/frontend/components/admin/quiz/DeleteQuizButton.tsx b/frontend/components/admin/quiz/DeleteQuizButton.tsx index 9f918da3..d180d681 100644 --- a/frontend/components/admin/quiz/DeleteQuizButton.tsx +++ b/frontend/components/admin/quiz/DeleteQuizButton.tsx @@ -1,8 +1,7 @@ 'use client'; -import { useState } from 'react'; - import { useRouter } from 'next/navigation'; +import { useState } from 'react'; interface DeleteQuizButtonProps { quizId: string; diff --git a/frontend/components/admin/quiz/QuestionEditor.tsx b/frontend/components/admin/quiz/QuestionEditor.tsx index ae6fc79c..3ebfaa97 100644 --- a/frontend/components/admin/quiz/QuestionEditor.tsx +++ b/frontend/components/admin/quiz/QuestionEditor.tsx @@ -169,6 +169,7 @@ export function QuestionEditor({ setValidationError(null); setActiveLocale('en'); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isEditing]); useEffect(() => { @@ -501,7 +502,7 @@ export function QuestionEditor({