@@ -5,6 +5,7 @@ import type { TechStackWidgetData } from '@/common/types/widgetData';
55import { useWidgetIdAndType } from '@/common/components/widgetFrame/context/WidgetContext' ;
66import { useWorkspaceWidgetStore } from '@/common/store/workspace' ;
77import { useShallow } from 'zustand/react/shallow' ;
8+ import { useTechStackModalStore } from '../../store/techStackModalStore' ;
89import {
910 updateArrayContentAction ,
1011 updateSelectorPickAction ,
@@ -55,7 +56,27 @@ export function useTechStack() {
5556 [ widgetId , type ] ,
5657 ) ;
5758
58- const [ isModalOpen , setIsModalOpen ] = useState ( false ) ;
59+ const activeWidgetId = useTechStackModalStore (
60+ ( state ) => state . activeWidgetId ,
61+ ) ;
62+ const openModal = useTechStackModalStore ( ( state ) => state . openModal ) ;
63+ const closeModal = useTechStackModalStore ( ( state ) => state . closeModal ) ;
64+
65+ // 이 모달이 열려있는지 확인
66+ const isModalOpen = activeWidgetId === widgetId ;
67+
68+ const handleOpenModal = useCallback ( ( ) => {
69+ // 다른 모달이 열려있으면 동작하지 않음 (Blocking)
70+ if ( activeWidgetId && activeWidgetId !== widgetId ) {
71+ return ;
72+ }
73+
74+ openModal ( widgetId ) ;
75+ } , [ widgetId , openModal , activeWidgetId ] ) ;
76+
77+ const handleCloseModal = useCallback ( ( ) => {
78+ closeModal ( ) ;
79+ } , [ closeModal ] ) ;
5980
6081 const setSelectedTechStacks = ( value : React . SetStateAction < TechStack [ ] > ) => {
6182 let newItems : TechStack [ ] ;
@@ -104,8 +125,8 @@ export function useTechStack() {
104125 handleCreateSubject,
105126 actions : {
106127 setSelectedTechStacks,
107- openModal : ( ) => setIsModalOpen ( true ) ,
108- closeModal : ( ) => setIsModalOpen ( false ) ,
128+ openModal : handleOpenModal ,
129+ closeModal : handleCloseModal ,
109130 } ,
110131 } ;
111132}
0 commit comments