Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,43 @@ import { useToast } from "@/hooks/useToast";
import { DESIGN_TOKEN_COLOR } from "@/style/designTokens";

type AddQuestionViewProps = {
onAddQuestion: (content: string) => void;
onAddMultipleQuestions: (contents: string[]) => void;
onAddQuestions: (contents: string[]) => void;
maxCount: number;
};

export default function AddQuestionView({ onAddQuestion, onAddMultipleQuestions, maxCount }: AddQuestionViewProps) {
export default function AddQuestionView({ onAddQuestions, maxCount }: AddQuestionViewProps) {
const { toast } = useToast();
const { tabs, curTab, selectTab } = useTabs(["직접작성", "추천질문"] as const);
const { value: customQuestion, handleInputChange: handleCustomChange, resetInput } = useInput();
const { tabs: categoryTabs, curTab: curCategoryTab, selectTab: selectCategoryTab } = useTabs(QUESTION_TYPES);
const { selectedValues, isChecked, toggle } = useCheckBox();
const { selectedValues, isChecked, toggle, resetChecked } = useCheckBox();

const handleDirectAdd = () => {
if (customQuestion.trim()) {
onAddQuestion(customQuestion);
const handleAddQuestion = () => {
const hasCustomQuestion = customQuestion.trim().length > 0;
const hasSelectedQuestions = selectedValues.length > 0;

if (!hasCustomQuestion && !hasSelectedQuestions) {
return;
}

const questionsToAdd: string[] = [];

if (hasCustomQuestion) {
questionsToAdd.push(customQuestion.trim());
}

if (hasSelectedQuestions) {
questionsToAdd.push(...selectedValues);
}

onAddQuestions(questionsToAdd);

if (hasCustomQuestion) {
resetInput();
}
};

const handleRecommendedAdd = () => {
if (selectedValues.length > 0) {
onAddMultipleQuestions(selectedValues);
if (hasSelectedQuestions) {
resetChecked();
}
};

Expand Down Expand Up @@ -130,7 +145,10 @@ export default function AddQuestionView({ onAddQuestion, onAddMultipleQuestions,
padding: 0;
`}
>
<ButtonProvider.Primary onClick={curTab === "직접작성" ? handleDirectAdd : handleRecommendedAdd}>
<ButtonProvider.Primary
onClick={handleAddQuestion}
disabled={customQuestion.trim().length === 0 && selectedValues.length === 0}
>
{selectedValues.length > 0 ? (
<span>
추가하기
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,14 @@ export default function QuestionEditSection({ onClose }: QuestionEditSectionProp
};

/**
* 질문 추가 완료 핸들러 (단일)
* 질문 추가 완료 핸들러
*/
const handleAddQuestionComplete = (content: string) => {
const newQuestions = [...questions, { questionType: "plain_text" as const, questionContent: content }];
const handleAddQuestions = (contents: string[]) => {
const newQuestionObjects = contents.map((content) => ({
questionType: "plain_text" as const,
questionContent: content,
}));
const newQuestions = [...questions, ...newQuestionObjects];
setEditingQuestions(newQuestions);

// 원래 모드로 돌아가고 모달 제목 복원
Expand All @@ -142,28 +146,6 @@ export default function QuestionEditSection({ onClose }: QuestionEditSectionProp
toast.success("질문이 추가되었어요!");
};

/**
* 질문 추가 완료 핸들러 (복수)
*/
const handleAddMultipleQuestions = (contents: string[]) => {
const newQuestionObjects = contents.map((content) => ({
questionType: "plain_text" as const,
questionContent: content,
}));
const newQuestions = [...questions, ...newQuestionObjects];
setEditingQuestions(newQuestions);

// 원래 모드로 돌아가고 모달 제목 복원
setIsAddMode(false);
setModalDataState((prev) => ({
...prev,
title: "질문 리스트",
enableFooter: false,
}));

toast.success(`${contents.length}개의 질문이 추가되었어요!`);
};

/**
* 질문 수정 취소 핸들러 (뒤로가기 버튼)
*/
Expand Down Expand Up @@ -279,11 +261,7 @@ export default function QuestionEditSection({ onClose }: QuestionEditSectionProp
return (
<>
{isAddMode ? (
<AddQuestionView
onAddQuestion={handleAddQuestionComplete}
onAddMultipleQuestions={handleAddMultipleQuestions}
maxCount={10 - questions.length}
/>
<AddQuestionView onAddQuestions={handleAddQuestions} maxCount={10 - questions.length} />
) : (
<>
<section
Expand Down