From 22ed78c87b111e5022413bbf7c8537a3e652a2f5 Mon Sep 17 00:00:00 2001 From: bicochan Date: Mon, 28 Sep 2026 16:37:20 +0900 Subject: [PATCH] =?UTF-8?q?[as]=20feat:=20=ED=96=89=EC=A0=95=EC=A7=80?= =?UTF-8?q?=EC=9B=90=20=ED=8E=98=EC=9D=B4=EC=A7=80=20useSearchParamsState?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-base-layout)/design-cnstn/page.tsx | 10 ++- .../(with-base-layout)/fnrs-cnsltn/page.tsx | 10 ++- .../(with-base-layout)/instl-sncn/page.tsx | 10 ++- .../sewer-bsc-plan/page.tsx | 10 ++- .../ui/components/floating-action-buttons.tsx | 8 +- .../design-cnstn/ui/design-form-page.tsx | 10 +-- .../design-cnstn/ui/design-list-page.tsx | 67 ++++++++------ .../src/pages/design-cnstn/ui/design-list.tsx | 4 +- .../design-cnstn/ui/design-view-page.tsx | 4 +- .../ui/components/floating-action-buttons.tsx | 8 +- .../pages/fnrs-cnsltn/ui/fnrs-form-page.tsx | 12 +-- .../pages/fnrs-cnsltn/ui/fnrs-list-page.tsx | 67 ++++++++------ .../as/src/pages/fnrs-cnsltn/ui/fnrs-list.tsx | 4 +- .../ui/components/floating-action-buttons.tsx | 8 +- .../pages/instl-sncn/ui/instl-form-page.tsx | 12 +-- .../pages/instl-sncn/ui/instl-list-page.tsx | 56 +++++++----- .../as/src/pages/instl-sncn/ui/instl-list.tsx | 4 +- .../pages/instl-sncn/ui/instl-view-page.tsx | 4 +- .../ui/components/floating-action-buttons.tsx | 12 +-- .../ui/sewer-bsc-plan-form-page.tsx | 18 ++-- .../ui/sewer-bsc-plan-list-page.tsx | 73 +++++++++------ .../sewer-bsc-plan/ui/sewer-bsc-plan-list.tsx | 4 +- .../ui/sewer-bsc-plan-view-page.tsx | 4 +- apps/as/src/shared/lib/index.ts | 2 + apps/as/src/shared/lib/list-return-href.ts | 50 +++++++++++ .../src/shared/lib/use-search-params-state.ts | 90 +++++++++++++++++++ 26 files changed, 405 insertions(+), 156 deletions(-) create mode 100644 apps/as/src/shared/lib/list-return-href.ts create mode 100644 apps/as/src/shared/lib/use-search-params-state.ts diff --git a/apps/as/app/(main)/(with-base-layout)/design-cnstn/page.tsx b/apps/as/app/(main)/(with-base-layout)/design-cnstn/page.tsx index cced4a877..ec03c3be7 100644 --- a/apps/as/app/(main)/(with-base-layout)/design-cnstn/page.tsx +++ b/apps/as/app/(main)/(with-base-layout)/design-cnstn/page.tsx @@ -1,3 +1,11 @@ +import { Suspense } from "react"; + import { DesignListPage } from "@/pages/design-cnstn"; -export default DesignListPage; +export default function Page() { + return ( + + + + ); +} diff --git a/apps/as/app/(main)/(with-base-layout)/fnrs-cnsltn/page.tsx b/apps/as/app/(main)/(with-base-layout)/fnrs-cnsltn/page.tsx index 734a0afd9..bf6029a76 100644 --- a/apps/as/app/(main)/(with-base-layout)/fnrs-cnsltn/page.tsx +++ b/apps/as/app/(main)/(with-base-layout)/fnrs-cnsltn/page.tsx @@ -1,3 +1,11 @@ +import { Suspense } from "react"; + import { FnrsListPage } from "@/pages/fnrs-cnsltn"; -export default FnrsListPage; +export default function Page() { + return ( + + + + ); +} diff --git a/apps/as/app/(main)/(with-base-layout)/instl-sncn/page.tsx b/apps/as/app/(main)/(with-base-layout)/instl-sncn/page.tsx index a3d6e05ac..413df0c3d 100644 --- a/apps/as/app/(main)/(with-base-layout)/instl-sncn/page.tsx +++ b/apps/as/app/(main)/(with-base-layout)/instl-sncn/page.tsx @@ -1,3 +1,11 @@ +import { Suspense } from "react"; + import { InstlListPage } from "@/pages/instl-sncn"; -export default InstlListPage; +export default function Page() { + return ( + + + + ); +} diff --git a/apps/as/app/(main)/(with-base-layout)/sewer-bsc-plan/page.tsx b/apps/as/app/(main)/(with-base-layout)/sewer-bsc-plan/page.tsx index d07ca4b43..b7b96e246 100644 --- a/apps/as/app/(main)/(with-base-layout)/sewer-bsc-plan/page.tsx +++ b/apps/as/app/(main)/(with-base-layout)/sewer-bsc-plan/page.tsx @@ -1,3 +1,11 @@ +import { Suspense } from "react"; + import { SewerBscPlanListPage } from "@/pages/sewer-bsc-plan"; -export default SewerBscPlanListPage; +export default function Page() { + return ( + + + + ); +} diff --git a/apps/as/src/pages/design-cnstn/ui/components/floating-action-buttons.tsx b/apps/as/src/pages/design-cnstn/ui/components/floating-action-buttons.tsx index 37af44b48..94088f228 100644 --- a/apps/as/src/pages/design-cnstn/ui/components/floating-action-buttons.tsx +++ b/apps/as/src/pages/design-cnstn/ui/components/floating-action-buttons.tsx @@ -8,7 +8,7 @@ import { useQueryClient } from "@tanstack/react-query"; import { AxiosError } from "axios"; import { ENDPOINT } from "@/shared/config"; -import { useAlertStore, useUserStore } from "@/shared/lib"; +import { getListHref, useAlertStore, useUserStore, withListQs } from "@/shared/lib"; import { type DesignCnstnApplySaveRequestDto, designCnstnKeys, @@ -103,11 +103,11 @@ function FloatingActionButtons({ isRegister && actionButtons.some((button) => button === DESIGN_CNSTN_VIEW_BUTTON_ACTION.strg); function handleGoToList() { - router.push("/design-cnstn"); + router.push(getListHref("/design-cnstn")); } function handleEdit() { - router.push(`/design-cnstn/${designCnstnDocNo}/edit`); + router.push(withListQs(`/design-cnstn/${designCnstnDocNo}/edit`)); } function shouldShowButton(action: DesignCnstnViewButtonAction) { @@ -177,7 +177,7 @@ function FloatingActionButtons({ action: DESIGN_CNSTN_VIEW_BUTTON_ACTION.del, successMessage: "삭제되었습니다.", }); - router.push("/design-cnstn"); + router.push(getListHref("/design-cnstn")); } function getReviewOpinionFormData() { diff --git a/apps/as/src/pages/design-cnstn/ui/design-form-page.tsx b/apps/as/src/pages/design-cnstn/ui/design-form-page.tsx index 254a7a010..276073307 100644 --- a/apps/as/src/pages/design-cnstn/ui/design-form-page.tsx +++ b/apps/as/src/pages/design-cnstn/ui/design-form-page.tsx @@ -8,7 +8,7 @@ import { useConfirm } from "@frontend-opensource/use-react-hooks"; import { zodResolver } from "@hookform/resolvers/zod"; import { useQueryClient } from "@tanstack/react-query"; -import { useAlertStore, useUserStore } from "@/shared/lib"; +import { getListHref, useAlertStore, useUserStore, withListQs } from "@/shared/lib"; import { RhfDevTool, SectionCollapsibleGroup, SectionCollapsibleToggle } from "@/shared/ui"; import { designCnstnKeys, @@ -91,7 +91,7 @@ function DesignFormPage({ mode, initialData, createDefaults }: DesignFormPagePro alert("저장되었습니다."); queryClient.invalidateQueries({ queryKey: designCnstnKeys.all }); - router.push(`/design-cnstn/${designCnstnDocNo}/edit`); + router.push(withListQs(`/design-cnstn/${designCnstnDocNo}/edit`)); } catch (error) { console.error("저장 실패:", error); alert("저장 중 오류가 발생했습니다."); @@ -115,7 +115,7 @@ function DesignFormPage({ mode, initialData, createDefaults }: DesignFormPagePro alert("신청 완료되었습니다."); queryClient.invalidateQueries({ queryKey: designCnstnKeys.all }); - router.push(`/design-cnstn/${designCnstnDocNo}`); + router.push(withListQs(`/design-cnstn/${designCnstnDocNo}`)); } catch (error) { console.error("신청 실패:", error); alert("신청 중 오류가 발생했습니다."); @@ -144,7 +144,7 @@ function DesignFormPage({ mode, initialData, createDefaults }: DesignFormPagePro await designCnstnMngService.delete(docNo); alert("삭제되었습니다."); queryClient.invalidateQueries({ queryKey: designCnstnKeys.list() }); - router.push("/design-cnstn"); + router.push(getListHref("/design-cnstn")); } catch (error) { console.error("삭제 실패:", error); alert("삭제 중 오류가 발생했습니다."); @@ -184,7 +184,7 @@ function DesignFormPage({ mode, initialData, createDefaults }: DesignFormPagePro