Skip to content

Commit 7d08abb

Browse files
authored
Merge pull request #157 from TEAM-COMFIT/fix/#156/experience-pre-refactor-bugs
[Fix] 경험 등록/수정/조회 페이지 리팩토링 전 버그 수정
2 parents 55858a8 + a3fcdd5 commit 7d08abb

5 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/features/experience-detail/config/messages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export const EXPERIENCE_MESSAGES = {
4040
SAVE_FAILED: "경험 저장에 실패했습니다. 다시 시도해주세요",
4141
DELETE_FAILED: "경험 삭제에 실패했습니다. 다시 시도해주세요",
4242
DEFAULT_SETTING_FAILED: "기본 경험 설정에 실패했습니다",
43+
FETCH_FAILED: "경험 데이터를 불러오는데 실패했습니다.",
4344
},
4445

4546
SUCCESS: {

src/features/experience-detail/model/use-actions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ export const useExperienceSubmit = () => {
9797
});
9898

9999
const submit = useCallback(async () => {
100+
const { isSubmitting } = useExperienceDetailStore.getState();
101+
if (isSubmitting) return;
102+
100103
const result = validateExperienceDraft(draft);
101104

102105
if (!result.ok) {

src/features/experience-detail/ui/experience-form/experience-form.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
useExperienceHeaderActions,
1010
} from "../../model/use-actions";
1111
import { useExperienceDateField } from "../../model/use-experience-date-field";
12+
import { useExperienceDetailStore } from "../../store/experience.store";
1213
import {
1314
useExperienceActions,
1415
useExperienceDraft,
@@ -22,6 +23,7 @@ import type { TextfieldType } from "@/shared/ui/textfield/textfield";
2223
const ExperienceForm = () => {
2324
const draft = useExperienceDraft();
2425
const isDraftDefault = useIsDraftDefault();
26+
const isSubmitting = useExperienceDetailStore((s) => s.isSubmitting);
2527
const { setDraftField } = useExperienceActions();
2628

2729
const { onToggleDefault } = useExperienceHeaderActions();
@@ -36,7 +38,7 @@ const ExperienceForm = () => {
3638
isDefault={isDraftDefault}
3739
onToggle={onToggleDefault}
3840
rightSlot={
39-
<Button variant="primary" size="small" onClick={submit}>
41+
<Button variant="primary" size="small" onClick={submit} disabled={isSubmitting}>
4042
작성완료
4143
</Button>
4244
}

src/pages/experience-detail/experience-detail-page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
useLeaveConfirm,
1111
useGetExperienceDetail,
1212
hydrateExperienceFromApi,
13+
EXPERIENCE_MESSAGES,
1314
} from "@/features/experience-detail";
1415

1516
import type { ExperienceMode } from "@/features/experience-detail";
@@ -50,7 +51,7 @@ const ExperienceDetailPage = ({ mode }: ExperiencePageProps) => {
5051
}
5152

5253
if (shouldFetch && isError) {
53-
return <div>경험 데이터를 불러오는데 실패했습니다.</div>;
54+
return <div>{EXPERIENCE_MESSAGES.API.FETCH_FAILED}</div>;
5455
}
5556

5657
const content = (() => {

src/shared/api/config/query-key.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export const universityQueryKey = {
66

77
// 경험 관련 API (experience)
88
export const experienceQueryKey = {
9-
all: () => ["experiene"],
9+
all: () => ["experience"],
1010
lists: () => [...experienceQueryKey.all(), "list"], // 모든 경험 리스트
1111
list: (type: string, page: number) => [
1212
...experienceQueryKey.lists(),
@@ -27,7 +27,7 @@ export const meQueryKey = {
2727
export const aiReportsQueryKey = {
2828
all: () => ["aiReports"],
2929
list: (page: number, keyword?: string) => [
30-
...experienceQueryKey.all(),
30+
...aiReportsQueryKey.all(),
3131
page,
3232
keyword,
3333
], // page, keyword에 따른 AI report 리스트

0 commit comments

Comments
 (0)