vkashti / app / admin / quiz / components / QuizHeader.tsx
QuizHeader.tsx
Raw
'use client';
import { useState } from 'react';
import { createClient } from '@/utils/supabase/client';
import { FiChevronLeft, FiEdit2, FiTrash2 } from 'react-icons/fi';
import { Quiz } from '../[id]/page';
import { QuizDialog } from './QuizDialog';

interface QuizHeaderProps {
  quiz: Quiz;
  onBack: () => void;
  onQuizUpdate: (updatedQuiz: Partial<Quiz>) => void;
}

export function QuizHeader({ quiz, onBack, onQuizUpdate }: QuizHeaderProps) {
  const [isEditDialogOpen, setIsEditDialogOpen] = useState(false);
  const supabase = createClient();

  const handleEditQuiz = async (updatedQuiz: { name: string; date: string; url: string }) => {
    const { error } = await supabase
      .from('quizes')
      .update(updatedQuiz)
      .eq('id', quiz.id);

    if (error) {
      console.error('Error updating quiz:', error);
      alert('Грешка при обновяването на куиза');
      return;
    }

    onQuizUpdate(updatedQuiz);
  };

  const handleDeleteQuiz = async () => {
    if (!confirm('Сигурни ли сте, че искате да изтриете този куиз?')) {
      return;
    }

    const { error } = await supabase
      .from('quizes')
      .delete()
      .eq('id', quiz.id);

    if (error) {
      console.error('Error deleting quiz:', error);
      alert('Грешка при изтриването на куиза');
      return;
    }

    onBack();
  };

  return (
    <>
      <div className="shadow bg-white rounded-lg">
        <div className="flex items-center justify-between p-6">
          <div className="flex items-center gap-4">
            <button
              onClick={onBack}
              className="text-blue-600 hover:text-blue-800 flex items-center"
            >
              <FiChevronLeft className="w-5 h-5" />
            </button>
            <div className="text-2xl text-gray-800">{quiz.name}</div>
          </div>
          <div className="flex items-center gap-2">
            <button 
              onClick={() => setIsEditDialogOpen(true)}
              className="btn btn-sm btn-ghost"
            >
              <FiEdit2 className="w-4 h-4" />
            </button>
            <button 
              onClick={handleDeleteQuiz}
              className="btn btn-sm btn-ghost text-red-600 hover:text-red-700"
            >
              <FiTrash2 className="w-4 h-4" />
            </button>
          </div>
        </div>
      </div>

      <QuizDialog
        isOpen={isEditDialogOpen}
        onClose={() => setIsEditDialogOpen(false)}
        onSave={handleEditQuiz}
        initialValues={quiz}
      />
    </>
  );
}