chore: post message to apo

pull/17608/head
keting lu 1 year ago
parent d7acd13553
commit d51ca40781

@ -8,12 +8,10 @@ import Header from '@/app/components/header'
import { EventEmitterContextProvider } from '@/context/event-emitter'
import { ProviderContextProvider } from '@/context/provider-context'
import { ModalContextProvider } from '@/context/modal-context'
import MessageListener from '../components/base/message-listener'
const Layout = ({ children }: { children: ReactNode }) => {
return (
<>
<MessageListener />
<GA gaType={GaType.admin} />
<SwrInitor>
<AppContextProvider>

@ -1,34 +0,0 @@
'use client'
import { useRouter } from 'next/navigation'
import { useEffect } from 'react'
const MessageListener = () => {
const router = useRouter()
useEffect(() => {
localStorage.removeItem('disable_log_out')
const handleMessage = (event: MessageEvent) => {
if (event.data.action === 'auto-login') {
event.source.postMessage('got', event.origin)
localStorage.setItem('console_token', event.data.data.token)
localStorage.setItem('refresh_token', event.data.data.refreshToken)
sessionStorage.setItem('disable_log_out', true)
window.location.reload()
router.replace(event.data.src)
}
else if(event.data.action === 'clear-token') {
event.source.postMessage('got', event.origin)
localStorage.removeItem('console_token')
localStorage.removeItem('refresh_token')
}
}
window.addEventListener('message', handleMessage)
return () => {
window.removeEventListener('message', handleMessage)
}
}, [])
return null
}
export default MessageListener

@ -417,7 +417,7 @@ export const request = async<T>(url: string, options = {}, otherOptions?: IOther
const errResp: Response = err as any
if (errResp.status === 401) {
const [parseErr, errRespData] = await asyncRunSafe<ResponseError>(errResp.json())
const loginUrl = `${globalThis.location.origin}/signin`
const loginUrl = `${globalThis.location.origin}/dify/signin`
if (parseErr) {
globalThis.location.href = loginUrl
return Promise.reject(err)

@ -24,7 +24,7 @@ function waitUntilTokenRefreshed() {
const isRefreshingSignAvailable = function (delta: number) {
const nowTime = new Date().getTime()
const lastTime = globalThis.localStorage.getItem('last_refresh_time') || '0'
return nowTime - parseInt(lastTime) <= delta
return nowTime - Number.parseInt(lastTime) <= delta
}
// only one request can send
@ -63,6 +63,7 @@ async function getNewAccessToken(timeout: number): Promise<void> {
const { data } = await ret.json()
globalThis.localStorage.setItem('console_token', data.access_token)
globalThis.localStorage.setItem('refresh_token', data.refresh_token)
globalThis.window.parent.postMessage({ type: 'refresh_token', data }, window.location.origin)
}
}
}

Loading…
Cancel
Save