From b8ff15f187100d2d58a8b86da54cb31f28f0ea7c Mon Sep 17 00:00:00 2001 From: ljpark Date: Fri, 3 Apr 2026 17:33:34 +0900 Subject: [PATCH] =?UTF-8?q?wr:=20Toaster=20=EC=83=81=EC=9C=84=EB=A1=9C=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../matMng/coMat/coMatRvw/page.tsx | 2 - .../matMng/coMat/ruseCaseMng/page.tsx | 2 - .../matMng/coMat/ruseRvwHstry/page.tsx | 2 - .../matMng/coMng/coSttn/page.tsx | 2 - .../matMng/coMng/drgtSttn/page.tsx | 2 - .../matMng/coMng/ldrmntCoSttn/page.tsx | 2 - .../ruseFcltMng/fcltReg/htdflReg/page.tsx | 2 - .../ruseFcltMng/fcltReg/pbnstReg/page.tsx | 53 +++++++++---------- .../ruseFcltMng/fcltReg/rainReg/page.tsx | 2 - .../ruseFcltMng/fcltReg/rswtReg/page.tsx | 2 - .../ruseFcltMng/fcltSttn/htdflSttn/page.tsx | 3 +- .../ruseFcltMng/fcltSttn/pbnstSttn/page.tsx | 3 +- .../ruseFcltMng/fcltSttn/rainSttn/page.tsx | 3 +- .../ruseFcltMng/fcltSttn/rswtSttn/page.tsx | 3 +- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 3 +- .../prfmncReg/pbnstPrfmncReg/page.tsx | 3 +- .../prfmncSttn/chkgdnSttn/page.tsx | 3 +- .../prfmncSttn/pbnstPrfmncSttn/page.tsx | 3 +- .../app/(with-layout)/stats/rswtStat/page.tsx | 3 +- apps/wr/src/app/providers/app-provider.tsx | 2 + 20 files changed, 35 insertions(+), 65 deletions(-) diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx index 12532f317..4304945bd 100644 --- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx +++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx @@ -44,7 +44,6 @@ import { zodResolver } from "@hookform/resolvers/zod"; import moment from "moment"; import { useEffect, useRef, useState } from "react"; import { useForm, useWatch } from "react-hook-form"; -import { Toaster } from "react-hot-toast"; import { z } from "zod"; @@ -771,7 +770,6 @@ export default function CoMatRvw() { - ); } diff --git a/apps/wr/app/(with-layout)/matMng/coMat/ruseCaseMng/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/ruseCaseMng/page.tsx index 542f66844..9fc636427 100644 --- a/apps/wr/app/(with-layout)/matMng/coMat/ruseCaseMng/page.tsx +++ b/apps/wr/app/(with-layout)/matMng/coMat/ruseCaseMng/page.tsx @@ -23,7 +23,6 @@ import ListDiv from "@common/business_components/ui/list_div"; import { Button, Label } from "@common/components/ui"; import { useAlertStore } from "@/src/shared/lib"; import { useEffect, useState } from "react"; -import { Toaster } from "react-hot-toast"; import { useTranslation } from "react-i18next"; import * as XLSX from "xlsx"; @@ -357,7 +356,6 @@ export default function RuseCaseMng() { - {/* 엑셀 등록 모달 */} - ); } diff --git a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx index 8646d3a44..88b58e3f7 100644 --- a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx +++ b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx @@ -32,7 +32,6 @@ import type { DemandCompType } from "@common/business_components/ui/sdmInsertFor import { Button } from "@common/components/ui"; import moment from "moment"; import { useCallback, useEffect, useState } from "react"; -// import toast, { Toaster } from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { useAlertStore } from "@/src/shared/lib"; import { useConfirm } from "@frontend-opensource/use-react-hooks"; @@ -374,7 +373,6 @@ export default function CoSttn() { } > - {/* */} ); } diff --git a/apps/wr/app/(with-layout)/matMng/coMng/drgtSttn/page.tsx b/apps/wr/app/(with-layout)/matMng/coMng/drgtSttn/page.tsx index 1509e2081..1aafb4318 100644 --- a/apps/wr/app/(with-layout)/matMng/coMng/drgtSttn/page.tsx +++ b/apps/wr/app/(with-layout)/matMng/coMng/drgtSttn/page.tsx @@ -11,7 +11,6 @@ import ListDiv from "@common/business_components/ui/list_div"; import { Button, Label, ScrollArea } from "@common/components/ui"; import { useAlertStore } from "@/src/shared/lib"; import { useEffect, useState, useRef } from "react"; -import { Toaster } from "react-hot-toast"; export default function DrgtSttn() { const { code, drgt, drgtSearch, drgtModalSearch, drgtInit } = useWrStore((state) => state); @@ -292,7 +291,6 @@ export default function DrgtSttn() { bodyClass={"w-[50vw] max-w-none h-[80vh]"} body={} /> - ) diff --git a/apps/wr/app/(with-layout)/matMng/coMng/ldrmntCoSttn/page.tsx b/apps/wr/app/(with-layout)/matMng/coMng/ldrmntCoSttn/page.tsx index 5f4b576b8..41e16088e 100644 --- a/apps/wr/app/(with-layout)/matMng/coMng/ldrmntCoSttn/page.tsx +++ b/apps/wr/app/(with-layout)/matMng/coMng/ldrmntCoSttn/page.tsx @@ -29,7 +29,6 @@ import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components/ui"; import { useAlertStore } from "@/src/shared/lib"; import { useCallback, useEffect, useState } from "react"; -import { Toaster } from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function LdrmntCoSttn() { @@ -290,7 +289,6 @@ export default function LdrmntCoSttn() { bodyClass={"w-[40vw] max-w-none"} body={ setIsExcelOpen({ isModal: isOpen })} />} /> - diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx index acc44571f..d8f52297c 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx @@ -18,7 +18,6 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; import { useEffect, useRef, useState } from "react"; -import { Toaster } from "react-hot-toast"; export default function Home() { const { @@ -183,7 +182,6 @@ export default function Home() { }} /> - ); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx index 87dff04fd..102414c37 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -30,7 +30,7 @@ import { btnClass } from "@/app/store/common/code"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@common/components"; import { useCallback, useEffect, useRef, useState } from "react"; import ListDiv from "@common/business_components/ui/list_div"; -import { confirmToast, tableData } from "@/components/lib/func/common"; +import { tableData } from "@/components/lib/func/common"; import type { customPbnst, fcBizType, @@ -44,13 +44,13 @@ import { import { PbnstMngForm } from "@/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm"; import { PbnstBuseForm } from "@/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm"; import { PbnstRegModal } from "@/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal"; -import { Toaster } from "react-hot-toast"; import { writeRgtrAndMdfr } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg"; import { useFieldArray, useForm, type FieldErrors } from "react-hook-form"; // FieldErrors 타입 추가 import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createDefaultPbnstItem } from "./utilsZod"; import { useTranslation } from "react-i18next"; +import { useConfirm } from "@frontend-opensource/use-react-hooks"; import { useAlertStore } from "@/src/shared/lib"; export default function PublicReuseFaciltyInsert() { const { @@ -67,6 +67,7 @@ export default function PublicReuseFaciltyInsert() { } = useWrStore((state) => state); const { t } = useTranslation("base"); + const { confirm } = useConfirm(); const alert = useAlertStore((state) => state.setMessage); const { pubFacHeadList, pbnstHasuResCount, pbnstHasuRes, pbnstRes } = pbnst; const { regAuthrtYn, mdfcnAuthrtYn, laeSeCd } = auth; @@ -137,30 +138,29 @@ export default function PublicReuseFaciltyInsert() { }); const handleConfirm = async () => { - Promise.allSettled([ + const [resFclt, resBiz] = await Promise.allSettled([ pbnstRuseFcltUpdate(pbnst as customPbnst[]), pbnstRuseBizUpdate(bizs), - ]).then(([resFclt, resBiz]) => { - const isFcltSuccess = resFclt.status === "fulfilled"; - const isBizSuccess = resBiz.status === "fulfilled"; - if (isFcltSuccess && isBizSuccess) { - alert("하수 재이용 시설 및 사업이 수정되었습니다."); - // 메시지 표시, 페이지 이동 등 - } else { - let message = ""; - // ✅ 각각 어떤 항목이 실패했는지도 로그/알림 처리 - if (!isFcltSuccess) { - message = "하수재이용 시설 "; - } - if (!isBizSuccess) { - message += "하수재이용 시설 사업 "; - } - alert(message + "오류 입니다 "); - pubHasuInit("1", laeSeCd); + ]); + const isFcltSuccess = resFclt.status === "fulfilled"; + const isBizSuccess = resBiz.status === "fulfilled"; + if (isFcltSuccess && isBizSuccess) { + alert("하수 재이용 시설 및 사업이 수정되었습니다."); + } else { + let message = ""; + if (!isFcltSuccess) { + message = "하수재이용 시설 "; } - }); + if (!isBizSuccess) { + message += "하수재이용 시설 사업 "; + } + alert(message + "오류 입니다 "); + pubHasuInit("1", laeSeCd); + } }; - confirmToast(t("isUpdatetMsg"), handleConfirm); + if (await confirm(t("isUpdatetMsg"))) { + await handleConfirm(); + } }; // 폼 유효성 검사 실패 시 호출될 함수 @@ -330,9 +330,7 @@ export default function PublicReuseFaciltyInsert() { onClick={() => { // pbnstMngData([] as customPbnst[]); if (!selectRow) { - alert( - "재시용시설을 등록할 하수리시시설을 테이블에서 선택하고 등록버튼을 눌러주세요" - ); + alert("재시용시설을 등록할 하수처리시설을 목록에서 선택하고\n 등록버튼을 눌러주세요"); return; } else { appendPbnstRuseFclt(); @@ -433,9 +431,7 @@ export default function PublicReuseFaciltyInsert() { onClick={() => { // pbnstMngData([] as customPbnst[]); if (!selectRow) { - alert( - "하수리시시설을 테이블을 선택하고 등록버튼을 눌러주세요" - ); + alert("하수처리시설을 목록에서 선택하고\n 등록버튼을 눌러주세요"); return; } else { appendPbnstRuseFclt(); @@ -470,7 +466,6 @@ export default function PublicReuseFaciltyInsert() { }} /> - ); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx index 9dd14c844..82344fa1f 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -20,7 +20,6 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; import { useEffect, useRef, useState } from "react"; -import { Toaster } from "react-hot-toast"; @@ -199,7 +198,6 @@ export default function Home() { }} /> - ); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx index ec2c7eda8..845ebf0e8 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx @@ -20,7 +20,6 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; import { useEffect, useRef, useState } from "react"; -import { Toaster } from "react-hot-toast"; /** @@ -202,7 +201,6 @@ export default function Home() { }} /> - ); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx index 28c286352..07b99d5b8 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx @@ -34,7 +34,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function HtdflSttn() { @@ -276,7 +276,6 @@ export default function HtdflSttn() { body={} /> - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx index 2d20be6aa..53c41a17d 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx @@ -30,7 +30,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; @@ -270,7 +270,6 @@ export default function PbnstSttn() { }} /> - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx index 60c917751..bf6601164 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx @@ -32,7 +32,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function RainSttn() { @@ -319,7 +319,6 @@ export default function RainSttn() { body={} /> - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx index 25ad68635..ac53229d0 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx @@ -32,7 +32,7 @@ import ListDiv from "@common/business_components/ui/list_div"; import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function RswtSttn() { @@ -279,7 +279,6 @@ export default function RswtSttn() { /> - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index 28f1e01b2..5bf2850c8 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -38,7 +38,7 @@ import { TooltipTrigger, } from "@common/components/ui/tooltip"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function Page() { @@ -434,7 +434,6 @@ export default function Page() { > } /> - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx index 4261ab657..aa9945f90 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx @@ -37,7 +37,7 @@ import { TableHeader, } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { headMakeprfmnc } from "../chkgdnReg/TableHead"; @@ -381,7 +381,6 @@ export default function PrfmncPrfmncReg() { setIsExcelOPen({ ...isExcelOpen, isModal: false }); }} > - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx index 18a30d2be..43cc6874d 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx @@ -21,7 +21,7 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function Page() { @@ -307,7 +307,6 @@ export default function Page() { /> } > - ); } diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx index 07382917f..fc790ea26 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx @@ -11,7 +11,7 @@ import { CHART_FORM, ContentsDiv, MainChart, ScrollArea, SearchBaseForm, SearchI import ListDiv from "@common/business_components/ui/list_div"; import { Label, Table, TableBody, TableHeader } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { headMakeprfmnc } from "../../prfmncReg/chkgdnReg/TableHead"; @@ -723,7 +723,6 @@ export default function PbnstPrfmncSttn() { - ) } diff --git a/apps/wr/app/(with-layout)/stats/rswtStat/page.tsx b/apps/wr/app/(with-layout)/stats/rswtStat/page.tsx index 026c27a62..9fa896555 100644 --- a/apps/wr/app/(with-layout)/stats/rswtStat/page.tsx +++ b/apps/wr/app/(with-layout)/stats/rswtStat/page.tsx @@ -15,7 +15,7 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components/ui"; import { useEffect, useState } from "react"; -import toast, { Toaster } from "react-hot-toast"; +import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; export default function RswtStat() { @@ -296,7 +296,6 @@ export default function RswtStat() { - ); diff --git a/apps/wr/src/app/providers/app-provider.tsx b/apps/wr/src/app/providers/app-provider.tsx index 0497e1f52..88a10e46e 100644 --- a/apps/wr/src/app/providers/app-provider.tsx +++ b/apps/wr/src/app/providers/app-provider.tsx @@ -14,6 +14,7 @@ import { ConfirmDialog } from "../../shared/ui/confirm-dialog"; // import "./globals.css"; import i18next from "i18next"; import { I18nextProvider } from "react-i18next"; +import { Toaster } from "react-hot-toast"; import koBase from "@/public/locales/ko/message.json"; import { StoreProvider as WrStoreProvider } from "@/app/store"; //import { LoginApi } from "@/src/entities/auth"; @@ -54,6 +55,7 @@ const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => { +