45 lines
1.3 KiB
TypeScript
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";
|
|
}
|