Skip to content

Commit dc47041

Browse files
committed
fix: 일관된 api호출
1 parent f6441a5 commit dc47041

File tree

4 files changed

+27
-36
lines changed

4 files changed

+27
-36
lines changed

src/hooks/useProjectLoader.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const useProjectLoader = () => {
2828
if (initialProviderFromNav) {
2929
console.log('🆕 [ProjectLoader] Setting initial provider from navigation:', initialProviderFromNav);
3030
setCurrentCSP(initialProviderFromNav);
31-
31+
3232
let providerType: CloudProviderType;
3333
switch (initialProviderFromNav) {
3434
case 'GCP':
@@ -50,38 +50,33 @@ export const useProjectLoader = () => {
5050

5151
const loadBlocksFromAPI = async () => {
5252
try {
53-
const res = await apiFetch(`/api/block/${projectId}`);
53+
// apiFetch는 항상 unwrapped data를 반환
54+
const data = await apiFetch(`/api/block/${projectId}`);
5455

55-
// 응답 스키마 호환 처리: res.blocks 또는 res.data.blocks
56-
const blocks =
57-
(res?.data?.blocks as DroppedBlock[]) ??
58-
(res?.blocks as DroppedBlock[]) ??
59-
[];
56+
// 블록 데이터 추출
57+
const blocks = (data?.blocks as DroppedBlock[]) ?? [];
6058

6159
if (Array.isArray(blocks)) {
6260
setDroppedBlocks(blocks);
6361
console.log('✅ 프로젝트 블록 불러오기 성공:', blocks.length);
6462
} else {
65-
console.warn('⚠️ 불러온 블록 데이터 형식이 올바르지 않습니다.', res);
63+
console.warn('⚠️ 불러온 블록 데이터 형식이 올바르지 않습니다.', data);
6664
}
6765

68-
// 연결도 내려줄 경우를 대비해 옵션 처리
69-
const apiConnections =
70-
(res?.data?.connections as any[]) ??
71-
(res?.connections as any[]) ??
72-
null;
66+
// 연결 데이터 추출
67+
const apiConnections = (data?.connections as any[]) ?? null;
7368
if (Array.isArray(apiConnections)) {
7469
setConnections(apiConnections);
7570
console.log('✅ 프로젝트 연결 불러오기 성공:', apiConnections.length);
7671
}
7772

7873
// 프로젝트의 클라우드 프로바이더 설정 불러오기
79-
const projectProvider = res?.data?.provider ?? res?.provider;
80-
74+
const projectProvider = data?.provider;
75+
8176
// 초기 프로바이더가 navigation state로 전달되었으면 그것을 우선 사용
8277
// (프로젝트 생성 직후에는 서버에 provider가 없을 수 있음)
8378
const finalProvider = initialProviderFromNav || projectProvider || 'AWS';
84-
79+
8580
console.log('🔄 [ProjectLoader] Provider priority:', {
8681
fromNav: initialProviderFromNav,
8782
fromServer: projectProvider,

src/pages/DashboardPage.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ const DashboardPage: React.FC = () => {
3030
const loadProjects = async () => {
3131
setIsLoading(true);
3232
try {
33-
const res = await apiFetch("/api/projects?size=8");
34-
const projectsFromApi = res?.data?.projects ?? [];
33+
// apiFetch는 항상 unwrapped data를 반환 (data.data 또는 data)
34+
const data = await apiFetch("/api/projects?size=8");
35+
const projectsFromApi = data?.projects ?? [];
3536

3637
const parsed: Project[] = projectsFromApi.map((proj: any) => ({
3738
id: String(proj.id),
@@ -62,13 +63,12 @@ const DashboardPage: React.FC = () => {
6263
const handleCreateProject = async (name: string, description: string) => {
6364
setIsCreating(true);
6465
try {
65-
const response = await apiFetch("/api/projects", {
66+
// apiFetch는 항상 unwrapped data를 반환
67+
const project = await apiFetch("/api/projects", {
6668
method: "POST",
6769
body: JSON.stringify({ name, description }),
6870
});
6971

70-
const project = response.data;
71-
7272
if (project?.id) {
7373
await loadProjects();
7474
setIsModalOpen(false);

src/pages/DeployStatusPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ const DeployStatusPage: React.FC = () => {
2626

2727
const loadProjects = async () => {
2828
try {
29-
const res = await apiFetch("/api/projects?size=100");
30-
setProjects(res.data?.projects || []);
29+
// apiFetch는 항상 unwrapped data를 반환
30+
const data = await apiFetch("/api/projects?size=100");
31+
setProjects(data?.projects || []);
3132
} catch (err) {
3233
toast.error("프로젝트 목록을 불러오는 데 실패했습니다.", {
3334
id: "fetch-projects",

src/pages/ProjectEditorPage.tsx

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -121,33 +121,28 @@ function ProjectEditorPage() {
121121

122122
const loadBlocksFromAPI = async () => {
123123
try {
124-
const res = await apiFetch(`/api/block/${projectId}`);
124+
// apiFetch는 항상 unwrapped data를 반환
125+
const data = await apiFetch(`/api/block/${projectId}`);
125126

126-
// 응답 스키마 호환 처리: res.blocks 또는 res.data.blocks
127-
const blocks =
128-
(res?.data?.blocks as DroppedBlock[]) ??
129-
(res?.blocks as DroppedBlock[]) ??
130-
[];
127+
// 블록 데이터 추출
128+
const blocks = (data?.blocks as DroppedBlock[]) ?? [];
131129

132130
if (Array.isArray(blocks)) {
133131
setDroppedBlocks(blocks);
134132
console.log("✅ 프로젝트 블록 불러오기 성공:", blocks.length);
135133
} else {
136-
console.warn("⚠️ 불러온 블록 데이터 형식이 올바르지 않습니다.", res);
134+
console.warn("⚠️ 불러온 블록 데이터 형식이 올바르지 않습니다.", data);
137135
}
138136

139-
// 연결도 내려줄 경우를 대비해 옵션 처리
140-
const apiConnections =
141-
(res?.data?.connections as any[]) ??
142-
(res?.connections as any[]) ??
143-
null;
137+
// 연결 데이터 추출
138+
const apiConnections = (data?.connections as any[]) ?? null;
144139
if (Array.isArray(apiConnections)) {
145140
setConnections(apiConnections);
146141
console.log("✅ 프로젝트 연결 불러오기 성공:", apiConnections.length);
147142
}
148143

149144
// 프로젝트의 클라우드 프로바이더 설정 불러오기
150-
const projectProvider = res?.data?.provider ?? res?.provider ?? "AWS";
145+
const projectProvider = data?.provider ?? "AWS";
151146
console.log("🔄 [ProjectEditor] Loading project with provider:", projectProvider);
152147

153148
// 프로바이더 설정 (UI 상태와 프로바이더 매니저 모두 업데이트)

0 commit comments

Comments
 (0)