qcast-front/src/hooks/common/useCanvasPopupStatusController.js
yoosangwook 12ff356640 👽chore: 소스코드 정리
- 사용하지 않는 코드 삭제
- 사용되지 않은 임포트 구문 삭제
2025-02-14 11:15:26 +09:00

90 lines
3.1 KiB
JavaScript

'use client'
import { useRecoilState, useRecoilValue } from 'recoil'
import useSWRMutation from 'swr/mutation'
import { useAxios } from '../useAxios'
import { unescapeString } from '@/util/common-utils'
import { moduleSelectionDataState, selectedModuleState } from '@/store/selectedModuleOptions'
import { compasDegAtom } from '@/store/orientationAtom'
import { canvasState, currentCanvasPlanState } from '@/store/canvasAtom'
import { POLYGON_TYPE } from '@/common/common'
/**
* 캔버스 팝업 상태 관리
* @param {*} param
* @returns
*/
export function useCanvasPopupStatusController(param = 1) {
const popupType = parseInt(param)
const [compasDeg, setCompasDeg] = useRecoilState(compasDegAtom)
const [moduleSelectionDataStore, setModuleSelectionDataStore] = useRecoilState(moduleSelectionDataState)
const [selectedModules, setSelectedModules] = useRecoilState(selectedModuleState)
const { get, promiseGet, getFetcher, postFetcher } = useAxios()
const canvas = useRecoilValue(canvasState)
const currentCanvasPlan = useRecoilValue(currentCanvasPlanState)
/**
* 팝업 상태 조회
* @param {number} popupTypeParam
* @returns
*/
const getModuleSelection = async (popupTypeParam) => {
const result = await promiseGet({
url: `/api/v1/canvas-popup-status?objectNo=${currentCanvasPlan.objectNo}&planNo=${currentCanvasPlan.planNo}&popupType=${popupTypeParam}`,
})
.then((res) => {
return res
})
.catch((err) => {
console.log('🚀 ~ getModuleSelection ~ err:', err)
return null
})
return result.data
}
/**
* 전체 팝업 상태 조회
* 조회 후 전체 데이터 recoil에 저장
*/
const handleModuleSelectionTotal = async () => {
for (let i = 1; i < 3; i++) {
const result = await getModuleSelection(i)
console.log('🚀 ~ handleModuleSelectionTotal ~ result:', result)
if (!result.objectNo) return
if (i === 1) {
setCompasDeg(result.popupStatus)
} else if (i === 2) {
const data = JSON.parse(unescapeString(result.popupStatus))
setModuleSelectionDataStore(data)
if (data.module) setSelectedModules(data.module)
const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE)
roofSurfaceList.forEach((surface) => {
surface.modules = modules.filter((module) => module.surfaceId === surface.id)
})
}
}
}
/**
* 팝업 상태 저장
*/
const { trigger, isMutating } = useSWRMutation(
`/api/v1/canvas-popup-status?objectNo=${currentCanvasPlan.objectNo}&planNo=${currentCanvasPlan.planNo}&popupType=${popupType}`,
(url, { arg }) => {
const params = {
objectNo: currentCanvasPlan.objectNo,
planNo: parseInt(currentCanvasPlan.planNo),
popupType: popupType.toString(),
popupStatus: popupType === 1 ? arg : JSON.stringify(arg).replace(/"/g, '\"'),
}
postFetcher(`/api/v1/canvas-popup-status`, params)
},
)
return { handleModuleSelectionTotal, trigger }
}