fix add new answer

This commit is contained in:
Tatiana Nikolaeva 2025-05-25 20:24:54 +05:00
parent 15ec6b9632
commit 6eb03dc112
10 changed files with 87 additions and 160 deletions

View file

@ -26,7 +26,8 @@ interface QuestionItemProps {
const QuestionItem: React.FC<QuestionItemProps> = ({
questionId,
initialTextQuestion = `Вопрос ${questionId}`,
// initialTextQuestion = `Вопрос ${questionId}`,
initialTextQuestion = `Вопрос`,
valueQuestion,
answerVariants: initialAnswerVariants,
onChangeQuestion,
@ -45,26 +46,24 @@ const QuestionItem: React.FC<QuestionItemProps> = ({
setTextQuestion(valueQuestion);
}, [valueQuestion]);
// useEffect(() => {
// if (initialAnswerVariants.length === 0 && surveyId) {
// handleAddAnswer();
// }
// }, [initialAnswerVariants.length, surveyId]);
const handleTypeChange = (type: 'single' | 'multiply') => {
setSelectedType(type);
};
const handleAddAnswer = async () => {
if (surveyId) {
try {
const newAnswer = await addNewAnswerVariant(surveyId, questionId, { text: '' });
onAnswerVariantsChange([...initialAnswerVariants, { id: newAnswer.id, text: '' }]);
} catch (error) {
console.error('Ошибка при добавлении варианта ответа:', error);
}
} else {
if (!surveyId) {
onAnswerVariantsChange([...initialAnswerVariants, { text: '' }]);
return;
}
try {
const newAnswer = await addNewAnswerVariant(surveyId, questionId, { text: '' });
onAnswerVariantsChange([...initialAnswerVariants, {
id: newAnswer.id,
text: newAnswer.text
}]);
} catch (error) {
console.error('Ошибка при добавлении варианта ответа:', error);
}
};
@ -109,7 +108,6 @@ const QuestionItem: React.FC<QuestionItemProps> = ({
newAnswerVariants[index] = { ...newAnswerVariants[index], text: value };
onAnswerVariantsChange(newAnswerVariants);
// Обновляем на сервере только если вариант уже существует (имеет id)
if (surveyId && newAnswerVariants[index].id) {
try {
await updateAnswerVariant(
@ -134,7 +132,6 @@ const QuestionItem: React.FC<QuestionItemProps> = ({
onAnswerVariantsChange(newAnswerVariants);
setSelectedAnswers(selectedAnswers.filter((i) => i !== index));
// Обновляем список после удаления
if (surveyId) {
const variants = await getAnswerVariants(surveyId, questionId);
const answers = variants.map((v: { id: number, text: string }) => ({ id: v.id, text: v.text }));