/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
 */

import { observer } from 'mobx-react';
import { useRootStore } from './context/context';
import { useState } from 'react';
import { setBaseURL } from './api/request';
import i18n from './i18n';
import { safeJSONParse } from './utils/common';
import { useTranslation } from 'react-i18next';
import { message } from 'antd';
import './assets/index.scss';
const App = observer(() => {
    const [hasURL, setHasURL] = useState(false);
    const { exampleStore } = useRootStore();
    const exampleInfo = exampleStore.activeExample; //全局的store
    const isProduction = import.meta.env.VITE_MODE === 'production';
    const { t } = useTranslation('example');
    const [messageApi, contextHolder] = message.useMessage();

    if (isProduction) {
        window.parent.postMessage({ event: 'pluginMounted' }, '*');

        window.onmessage = async (e) => {
            //向上层发送“插件挂载”的信息
            const { target, event, data, body } = typeof e.data === 'string' ? safeJSONParse(e.data) : e.data;
            if (target !== 'plugin') {
                return;
            }

            switch (event) {
                case 'wakeupPlugin':
                    //唤醒插件
                    setBaseURL(data.url);
                    setHasURL(true);
                    window.parent.postMessage({ event: 'getLanguage' }, '*');
                    window.parent.postMessage({ event: 'getTheme' }, '*');
                    break;
                case 'switchLanguage':
                    //切换语言
                    i18n.changeLanguage(body.lang);
                    break;
                case 'setTheme':
                    //设置主题色
                    if (body.isDark) {
                        document.documentElement.classList.add('dark');
                        document.body.className = 'dark';
                    } else {
                        document.documentElement.classList.remove('dark');
                        document.body.className = 'light';
                    }
                    break;
                case 'remote/import':
                    //导入文件
                    messageApi.open({
                        type: 'success',
                        content: t('importSuccess'),
                    });
                    break;
                default:
                    break;
            }
        };
    }

    return <>
        {
            isProduction && (exampleInfo !== undefined && hasURL ? (
                <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100vh' }}>
                    <h1>{t('welcomeTip')}</h1>
                    {contextHolder}
                </div>
            ) : <></>)
        }
    </>;
});

export default App;