임동욱 임동욱 08-19
merge: 이미지 업로드 실패 사유 표시
@9ad45d7f1cee205257f89c013a74c40bd99276fa
app/(protected)/(basic)/decoration-items/_actions.ts
--- app/(protected)/(basic)/decoration-items/_actions.ts
+++ app/(protected)/(basic)/decoration-items/_actions.ts
@@ -2,6 +2,10 @@
 
 import { revalidatePath } from 'next/cache';
 import { verifySession } from '@/lib/auth/dal';
+import {
+  BackendRequestError,
+  COMMUNICATION_ERROR_CODE,
+} from '@/lib/http/backend-fetch';
 import { fetchCommonCodes } from '@/lib/data/repositories/common-code-repository';
 import {
   createDecorationItem,
@@ -43,6 +47,15 @@
 const SAVE_FAILED_MESSAGE = '저장하지 못했습니다. 잠시 후 다시 시도해 주세요.';
 const DELETE_FAILED_MESSAGE = '삭제하지 못했습니다. 잠시 후 다시 시도해 주세요.';
 const IMAGE_UPLOAD_FAILED_MESSAGE = '이미지를 업로드하지 못했습니다.';
+
+// 백엔드가 사유를 준 경우(확장자·용량·저장소 설정 등)에는 그 말을 그대로 보여준다.
+// 통신 실패는 사유가 일반화된 문구뿐이라 그때만 위 메시지로 떨어진다.
+function describeUploadFailure(error: unknown): string {
+  if (error instanceof BackendRequestError && error.code !== COMMUNICATION_ERROR_CODE) {
+    return `${IMAGE_UPLOAD_FAILED_MESSAGE} (${error.message})`;
+  }
+  return IMAGE_UPLOAD_FAILED_MESSAGE;
+}
 
 function readString(formData: FormData, key: string): string {
   const value = formData.get(key);
@@ -140,8 +153,8 @@
     }
     try {
       imageFileId = await uploadDecorationItemImage(newFile);
-    } catch {
-      return { status: 'error', message: IMAGE_UPLOAD_FAILED_MESSAGE };
+    } catch (error) {
+      return { status: 'error', errors: { imageFileId: describeUploadFailure(error) } };
     }
   }
 
@@ -190,8 +203,8 @@
     }
     try {
       imageFileId = await uploadDecorationItemImage(newFile);
-    } catch {
-      return { status: 'error', message: IMAGE_UPLOAD_FAILED_MESSAGE };
+    } catch (error) {
+      return { status: 'error', errors: { imageFileId: describeUploadFailure(error) } };
     }
   }
 
lib/http/backend-fetch.ts
--- lib/http/backend-fetch.ts
+++ lib/http/backend-fetch.ts
@@ -19,7 +19,7 @@
  */
 
 const REQUEST_TIMEOUT_MS = 10_000;
-const COMMUNICATION_ERROR_CODE = -1;
+export const COMMUNICATION_ERROR_CODE = -1;
 const COMMUNICATION_ERROR_MESSAGE =
   '서버와 통신할 수 없습니다. 잠시 후 다시 시도해 주세요.';
 
Add a comment
List