@@ -39,22 +39,18 @@ const BotStep3 = ({ onPrev, assistantData, setAssistantData }) => {
3939 const [ selectedActions , setSelectedActions ] = useState ( [ ] ) ;
4040 const navigate = useNavigate ( ) ;
4141
42- const { data : updatedAssistant , refetch } = useQuery ( {
43- queryKey : [ 'assistant' , assistantData . assistantName ] ,
42+ const {
43+ data : notionPages ,
44+ refetch,
45+ isLoading,
46+ error,
47+ } = useQuery ( {
48+ queryKey : [ 'notionPages' , assistantData . assistantName ] ,
4449 queryFn : ( ) => fetchNotionPages ( assistantData . assistantName ) ,
45- enabled : ! ! assistantData . assistantName ,
50+ enabled : ! ! assistantData . assistantName && assistantData . isConnect === 1 ,
4651 } ) ;
4752
48- useEffect ( ( ) => {
49- if ( updatedAssistant && updatedAssistant . isConnect === 1 ) {
50- console . log ( 'Notion 연결됨' , updatedAssistant ) ;
51- setAssistantData ( ( prev ) => ( {
52- ...prev ,
53- isConnect : 1 ,
54- } ) ) ;
55- setSelectedKnowledge ( 'Notion' ) ;
56- }
57- } , [ updatedAssistant ] ) ;
53+ useEffect ( ( ) => { } , [ notionPages ] ) ;
5854
5955 const handlePDFClick = ( ) => {
6056 setSelectedKnowledge ( 'PDF' ) ;
@@ -78,14 +74,39 @@ const BotStep3 = ({ onPrev, assistantData, setAssistantData }) => {
7874 const notionWindow = window . open (
7975 notionAuthURL ,
8076 '_blank' ,
81- 'width=600,height=700'
77+ 'width=600,height=700,top=100,left=500 '
8278 ) ;
8379 if ( ! notionWindow ) {
8480 alert ( '팝업을 허용해주세요.' ) ;
8581 }
82+
83+ // 팝업창이 닫히면 OAuth 연결 상태 갱신
84+ const checkPopupClosed = setInterval ( ( ) => {
85+ if ( notionWindow . closed ) {
86+ clearInterval ( checkPopupClosed ) ;
87+ setAssistantData ( ( prev ) => ( { ...prev , isConnect : 1 } ) ) ;
88+ refetch ( ) ; // Notion 페이지 다시 불러오기
89+ }
90+ } , 1000 ) ;
8691 }
8792 } ;
8893
94+ useEffect ( ( ) => {
95+ const handleNotionAuthComplete = ( event ) => {
96+ if ( event . data === 'notion_auth_success' ) {
97+ if ( typeof setAssistantData === 'function' ) {
98+ setAssistantData ( ( prev ) => ( { ...prev , isConnect : 1 } ) ) ;
99+ }
100+ }
101+ } ;
102+
103+ window . addEventListener ( 'message' , handleNotionAuthComplete ) ;
104+
105+ return ( ) => {
106+ window . removeEventListener ( 'message' , handleNotionAuthComplete ) ;
107+ } ;
108+ } , [ setAssistantData ] ) ;
109+
89110 const toggleAction = ( action ) => {
90111 setSelectedActions ( ( prev ) =>
91112 prev . includes ( action )
@@ -221,7 +242,10 @@ const BotStep3 = ({ onPrev, assistantData, setAssistantData }) => {
221242 ) }
222243
223244 { selectedKnowledge === 'Notion' && (
224- < BotStepNotion onClose = { ( ) => setSelectedKnowledge ( null ) } />
245+ < BotStepNotion
246+ onClose = { ( ) => setSelectedKnowledge ( null ) }
247+ assistantName = { assistantData . assistantName }
248+ />
225249 ) }
226250
227251 { selectedKnowledge === 'Drive' && (
0 commit comments