исправлен порядок сбора данных для вопроса типа images

This commit is contained in:
Nastya 2025-08-23 08:12:40 +03:00
parent 2f5d742be4
commit acc2bd67f1
5 changed files with 24 additions and 14 deletions

@ -55,7 +55,7 @@ export const OwnImage = ({ imageUrl, questionId, variantId, onValidationError }:
});
const fileId = data?.data.fileIDMap[questionId];
const localImageUrl = URL.createObjectURL(file);
updateOwnVariant(variantId, "", "", fileId, localImageUrl);
updateOwnVariant(variantId, null, "", fileId, localImageUrl);
} catch (error) {
console.error("Error uploading image:", error);
enqueueSnackbar(t("The answer was not counted"));

@ -66,6 +66,7 @@ const OwnInput = ({ questionId, variant, largeCheck, ownPlaceholder }: OwnInputP
value={ownAnswer}
onClick={(e: React.MouseEvent<HTMLTextAreaElement>) => e.stopPropagation()}
onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) => {
console.log("клик", e.target.value);
updateOwnVariant(variant.id, e.target.value);
}}
/>

@ -32,7 +32,7 @@ interface QuizViewActions {
deleteAnswer: (questionId: string) => void;
updateOwnVariant: (
id: string, //
answer: string, //
answer: string | null, //
extendedText?: string, //
originalImageUrl?: string, //
localImageUrl?: string //
@ -55,8 +55,8 @@ export const createQuizViewStore = () =>
immer(
devtools(
(set, get) => ({
answers: [],
ownVariants: [],
answers: [], //Массив вообще всех ответов. Объекты хранят инфо о id вопроса и списке выбранных ответов
ownVariants: [], //Подробное описание ответов для особенных. Здесь подробно расписана вся кастомизация ответов в own вариантах
points: {},
pointsSum: 0,
currentQuizStep: "startpage",
@ -99,10 +99,7 @@ export const createQuizViewStore = () =>
updateOwnVariant(id, answer, extendedText, originalImageUrl, localImageUrl) {
set(
(state) => {
console.log("Случился вызов варианта свой ответ. Вот что в моих стор массивах на данный момент:");
console.log("answers", state.answers);
console.log("ownVariants", state.ownVariants);
console.log("Случился вызов варианта свой ответ. Вот что я получил:");
console.log("!!! STORE !!! ___ Случился вызов варианта свой ответ. Вот что я получил:");
console.log(id, answer, extendedText, originalImageUrl, localImageUrl);
const index = state.ownVariants.findIndex((variant) => variant.id === id);
@ -111,7 +108,7 @@ export const createQuizViewStore = () =>
id,
variant: {
id: id,
answer,
answer: answer === null ? state.ownVariants[index].variant.answer : answer,
extendedText: extendedText || "",
hints: "",
originalImageUrl: originalImageUrl || "",
@ -119,7 +116,7 @@ export const createQuizViewStore = () =>
},
});
} else {
state.ownVariants[index].variant.answer = answer;
if (answer !== null) state.ownVariants[index].variant.answer = answer;
if (extendedText !== undefined) {
state.ownVariants[index].variant.extendedText = extendedText;
}

@ -5,7 +5,7 @@
let domain = "https://hbpn.link";
const currentDomain = location.hostname;
let isProduction = !(
const isProduction = !(
currentDomain === "s.hbpn.link" ||
currentDomain.includes("localhost") ||
currentDomain.includes("127.0.0.1")

@ -100,7 +100,9 @@ export async function sendQuestionAnswer(
return;
}
case "images": {
console.log("Работает отправщик ответа для типа КАРТИНКИ");
if (question.content.multi) {
console.log("Этот вопрос есть МУЛЬТИ");
const answer = questionAnswer.answer;
const ownAnswer = Array.isArray(answer)
? ownVariants[ownVariants.findIndex((variant) => answer.some((a: string) => a === variant.id))]?.variant
@ -148,15 +150,20 @@ export async function sendQuestionAnswer(
qid: quizId,
});
}
console.log("Этот вопрос НЕ есть МУЛЬТИ");
const variant = question.content.variants.find((v) => v.id === questionAnswer.answer);
if (!variant) throw new Error(`Cannot find variant with id ${questionAnswer.answer} in question ${question.id}`);
let imageValue = variant.extendedText;
if (variant.isOwn) {
// Берем fileId из ownVariants для own вариантов
const ownVariantData = ownVariants.find((v) => v.id === variant.id)?.variant;
console.log("Был выбран вариант ", variant);
console.log("Был выбран ownVariant ", ownVariantData);
let imageValue = variant.extendedText;
if (variant.isOwn) {
if (ownVariantData?.originalImageUrl) {
// Конструируем полный URL для own вариантов
const baseUrl =
@ -167,9 +174,14 @@ export async function sendQuestionAnswer(
}
}
console.log("В конечном итоге я планирую отправить вот эти данные: ", {
Image: imageValue,
Description: ownVariantData ? ownVariantData.answer : variant.answer,
});
const body = {
Image: imageValue,
Description: variant.answer,
Description: ownVariantData ? ownVariantData.answer : variant.answer,
};
if (!body) throw new Error(`Body of answer in question ${question.id} is undefined`);