From c872d5c0f64c3068aa98e3d39016023c6ca55fb5 Mon Sep 17 00:00:00 2001 From: ysCha Date: Fri, 17 Apr 2026 18:04:05 +0900 Subject: [PATCH] =?UTF-8?q?[1960]=EC=B6=9C=EB=A0=A5=EB=90=9C=20[=EB=B0=B0?= =?UTF-8?q?=EC=B9=98=EB=8F=84=C2=B7=EA=B3=84=ED=86=B5=EB=8F=84]=EC=97=90?= =?UTF-8?q?=20=EA=B0=80=EB=8C=80=EA=B0=80=20=ED=91=9C=EC=8B=9C=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../circuitTrestle/CircuitTrestleSetting.jsx | 13 ++++++++++++- src/hooks/floorPlan/useImgLoader.js | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index 83d6f6c3..011cfe54 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -687,7 +687,18 @@ export default function CircuitTrestleSetting({ id }) { .map((obj) => { obj.pcses = getStepUpListData() }) - await capture(1) + // 캡처 실패 시 에러 팝업 후 중단 (다시 회로구성 가능) + try { + await capture(1) + } catch (e) { + console.log('🚀 ~ capture(1) error:', e) + setIsGlobalLoading(false) + swalFire({ + text: getMessage('common.message.send.error'), + icon: 'error', + }) + return + } //회로할당 저장 시 result=null인 경우에도 회로번호 텍스트 표시 유지 처리 diff --git a/src/hooks/floorPlan/useImgLoader.js b/src/hooks/floorPlan/useImgLoader.js index 47eea944..036a7605 100644 --- a/src/hooks/floorPlan/useImgLoader.js +++ b/src/hooks/floorPlan/useImgLoader.js @@ -106,6 +106,18 @@ export function useImgLoader() { canvas.renderAll() + // 렌더링 완료 대기 (최대 3초, 초과 시 에러) + const renderReady = await new Promise((resolve) => { + const timeout = setTimeout(() => resolve(false), 3000) + requestAnimationFrame(() => { + clearTimeout(timeout) + resolve(true) + }) + }) + if (!renderReady) { + throw new Error('RENDER_TIMEOUT') + } + const formData = new FormData() // 3. 도면 오브젝트의 바운딩 박스 계산 @@ -164,8 +176,9 @@ export function useImgLoader() { } catch (e) { canvas.backgroundColor = originalBg canvas.renderAll() - setIsGlobalLoading(false) + toggleLineEtc(true) console.log('🚀 ~ handleCanvasToPng ~ e:', e) + throw e } }