'use client' import './globals.css'; import { createContext, useContext, useEffect, useState } from 'react'; import { Providers } from '@/components/providers'; import { ConfigProvider, theme } from 'antd'; import { createScreenAdapter } from '@/utils/tools'; import { ScreenAdapter } from './ScreenAdapter'; import CallbackModal from '@/components/common/CallbackModal'; // 创建上下文来传递弹窗控制方法 const CallbackModalContext = createContext<{ setShowCallbackModal: (show: boolean) => void } | null>(null) // Hook 来使用弹窗控制方法 export const useCallbackModal = () => { const context = useContext(CallbackModalContext) if (!context) { throw new Error('useCallbackModal must be used within CallbackModalProvider') } return context } export default function RootLayout({ children, }: { children: React.ReactNode }) { const [showCallbackModal, setShowCallbackModal] = useState(false) const openCallback = async function (ev: MessageEvent) { console.log(ev) if (ev.data.type === 'waiting-payment') { setShowCallbackModal(true) } } useEffect(() => { window.addEventListener('message', openCallback) return () => { window.removeEventListener('message', openCallback) } }, []) return ( Movie Flow - Create Amazing Movies with AI {/* */}
{children} {showCallbackModal && setShowCallbackModal(false)} />}
) }