|
|
|
|
@ -1,26 +1,18 @@
|
|
|
|
|
'use client'
|
|
|
|
|
import { useEffect } from 'react'
|
|
|
|
|
import { useSearchParams } from 'next/navigation'
|
|
|
|
|
|
|
|
|
|
export const useOAuthCallback = () => {
|
|
|
|
|
const searchParams = useSearchParams()
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const MCPProviderID = searchParams.get('mcp_provider_id')
|
|
|
|
|
|
|
|
|
|
if (MCPProviderID && window.opener) {
|
|
|
|
|
if (window.opener) {
|
|
|
|
|
window.opener.postMessage({
|
|
|
|
|
type: 'oauth_callback',
|
|
|
|
|
payload: {
|
|
|
|
|
state: MCPProviderID,
|
|
|
|
|
},
|
|
|
|
|
}, '*')
|
|
|
|
|
window.close()
|
|
|
|
|
}
|
|
|
|
|
}, [searchParams])
|
|
|
|
|
}, [])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const openOAuthPopup = (url: string, callback: (state: string) => void) => {
|
|
|
|
|
export const openOAuthPopup = (url: string, callback: () => void) => {
|
|
|
|
|
const width = 600
|
|
|
|
|
const height = 600
|
|
|
|
|
const left = window.screenX + (window.outerWidth - width) / 2
|
|
|
|
|
@ -35,8 +27,7 @@ export const openOAuthPopup = (url: string, callback: (state: string) => void) =
|
|
|
|
|
const handleMessage = (event: MessageEvent) => {
|
|
|
|
|
if (event.data?.type === 'oauth_callback') {
|
|
|
|
|
window.removeEventListener('message', handleMessage)
|
|
|
|
|
const { state } = event.data.payload
|
|
|
|
|
callback(state)
|
|
|
|
|
callback()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|