Files
erika/lib/question-response-type.ts
T
2026-07-31 22:22:33 +07:00

45 lines
1.3 KiB
TypeScript

import type { ImageAnswerMode } from "@/db/schema/form";
export type QuestionResponseType =
| "answer-only"
| "answer-optional-image"
| "image-only"
| "answer-required-image";
type QuestionResponseSettings = {
required: boolean;
imageAnswerMode: ImageAnswerMode;
};
export function getQuestionResponseType(
question: QuestionResponseSettings,
): QuestionResponseType {
if (question.imageAnswerMode === "required") {
return question.required ? "answer-required-image" : "image-only";
}
return question.imageAnswerMode === "optional"
? "answer-optional-image"
: "answer-only";
}
export function getQuestionResponseSettings(
responseType: QuestionResponseType,
currentRequired = true,
): QuestionResponseSettings {
switch (responseType) {
case "answer-optional-image":
return { required: currentRequired, imageAnswerMode: "optional" };
case "image-only":
return { required: false, imageAnswerMode: "required" };
case "answer-required-image":
return { required: true, imageAnswerMode: "required" };
default:
return { required: currentRequired, imageAnswerMode: "none" };
}
}
export function isImageOnlyResponse(question: QuestionResponseSettings) {
return getQuestionResponseType(question) === "image-only";
}