지도 대상 선택 이동 시 지역·시설 검색조건 초기화
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
"use client";
|
||||
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useEffect, useMemo, useState, useRef } from "react";
|
||||
|
||||
import { windowPopupDefinitions } from "@/features/window-popup/model/popup-definitions";
|
||||
import {
|
||||
@@ -462,26 +462,37 @@ export default function WaterRiskPopupPage(_props: WindowPopupContentProps) {
|
||||
setSelectedResultKey("");
|
||||
};
|
||||
|
||||
/** 늦게 끝난 이전 행 요청이 최신 선택을 덮지 않도록 식별한다. */
|
||||
const mapRequestRef = useRef<string>("");
|
||||
|
||||
/** 선택 행의 실제 GeoJSON을 조회한 뒤 부모 지도 창에 전달한다. */
|
||||
const handleSelectResultRow = async (row: WaterRiskResultRow) => {
|
||||
const requestId = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
||||
mapRequestRef.current = requestId;
|
||||
postMessageToOpener(WINDOW_POPUP_MESSAGE_TYPE.WATER_RISK_SELECT_RESULT, {
|
||||
phase: "loading", requestId,
|
||||
});
|
||||
setSelectedResultKey(buildResultRowKey(row));
|
||||
setIsMapLoading(true);
|
||||
setErrorMessage("");
|
||||
try {
|
||||
const mapView = await fetchWaterRiskMapView(row);
|
||||
if (mapRequestRef.current !== requestId) return;
|
||||
postMessageToOpener(WINDOW_POPUP_MESSAGE_TYPE.WATER_RISK_SELECT_RESULT, {
|
||||
requestId,
|
||||
areaId: row.areaId,
|
||||
resultRow: row,
|
||||
mapView,
|
||||
});
|
||||
} catch (error) {
|
||||
if (mapRequestRef.current !== requestId) return;
|
||||
setErrorMessage(
|
||||
error instanceof Error
|
||||
? error.message
|
||||
: "통수위험 지도 결과를 조회하지 못했습니다.",
|
||||
);
|
||||
} finally {
|
||||
setIsMapLoading(false);
|
||||
if (mapRequestRef.current === requestId) setIsMapLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user