diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index 230eecd1..a55f4e46 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -25,6 +25,8 @@ import SampleReducer from './sample/SampleReducer' import styles from './playground.module.css' import useSWR from 'swr' import useSWRMutation from 'swr/mutation' +import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' +import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) @@ -267,6 +269,12 @@ export default function Playground() { return
Error...
} + useCanvasPopupStatusController(1) + + const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore) + useEffect(() => { + console.log('🚀 ~ Playground ~ canvasPopupStatusState:', canvasPopupStatusState) + }, [canvasPopupStatusState]) return ( <>
diff --git a/src/hooks/common/useCanvasPopupStatusController.js b/src/hooks/common/useCanvasPopupStatusController.js new file mode 100644 index 00000000..88b2207a --- /dev/null +++ b/src/hooks/common/useCanvasPopupStatusController.js @@ -0,0 +1,28 @@ +'use client' + +import { useEffect } from 'react' +import useSWR from 'swr' +import useSWRMutation from 'swr/mutation' +import { useAxios } from '../useAxios' +import { useRecoilState } from 'recoil' +import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' + +export function useCanvasPopupStatusController(popupType) { + const [canvasPopupStatusState, setCanvasPopupStatusState] = useRecoilState(canvasPopupStatusStore) + const { getFetcher, postFetcher } = useAxios() + const { + data: popupStatus, + error, + isLoading, + } = useSWR(popupType ? 'canvas-popup-status--data' : null, () => getFetcher(`http://localhost:8080/api/tutorial?popupType=${popupType}`)) + + useEffect(() => { + if (popupStatus) { + setCanvasPopupStatusState({ ...canvasPopupStatusState, [popupType]: popupStatus }) + } + }, [popupStatus]) + + const { trigger, isMutating } = useSWRMutation('canvas-popup-status-update', postFetcher) + + return { trigger } +} diff --git a/src/store/canvasPopupStatusAtom.js b/src/store/canvasPopupStatusAtom.js new file mode 100644 index 00000000..74aafb7d --- /dev/null +++ b/src/store/canvasPopupStatusAtom.js @@ -0,0 +1,13 @@ +import { atom } from 'recoil' + +export const canvasPopupStatusStore = atom({ + key: 'canvasPopupStatusState', + default: { + 1: {}, + 2: {}, + 3: {}, + 4: {}, + 5: {}, + 6: {}, + }, +})