import { Module } from "@/interfaces"; import useExamEditorStore from "@/stores/examEditor"; import { Generating } from "@/stores/examEditor/types"; import clsx from "clsx"; import { useEffect, useState } from "react"; import { BsArrowRepeat } from "react-icons/bs"; import { GiBrain } from "react-icons/gi"; interface Props { module: Module; sectionId: number; genType: Generating; generateFnc: (sectionId: number) => void className?: string; level?: boolean; disabled?: boolean; } const GenerateBtn: React.FC = ({ module, sectionId, genType, generateFnc, className, level = false, disabled = false }) => { const section = useExamEditorStore((store) => store.modules[level ? "level" : module].sections.find((s) => s.sectionId == sectionId)); const [loading, setLoading] = useState(false); const generating = section?.generating; const genResult = section?.genResult; const levelGenerating = section?.levelGenerating; const levelGenResults = section?.levelGenResults; useEffect(() => { const gen = level ? levelGenerating?.find(g => g === genType) !== undefined : (generating !== undefined && generating === genType); if (loading !== gen) { setLoading(gen); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [generating, levelGenerating, levelGenResults, genResult]) if (section === undefined) return <>; return ( ); } export default GenerateBtn;