index.js 2.92 KB
Newer Older
杨思琦's avatar
杨思琦 committed
1
/* eslint-disable global-require */
杨思琦's avatar
杨思琦 committed
2
import React, { useEffect, Suspense } from 'react';
3

dengxiaofeng's avatar
dengxiaofeng committed
4 5
import { Helmet } from 'react-helmet';
import { connect } from 'react-redux';
邓晓峰's avatar
邓晓峰 committed
6
import { Router, Switch } from '@wisdom-utils/runtime';
7
import { helpers, event } from '@wisdom-utils/utils';
杨思琦's avatar
杨思琦 committed
8
import { AliveScope } from 'react-activation';
曾婧's avatar
曾婧 committed
9
import defaultSetting from '@wisdom-utils/components/lib/AppLayout/layouts/defaultSettings';
邓晓峰's avatar
邓晓峰 committed
10
// eslint-disable-next-line import/extensions
邓晓峰's avatar
邓晓峰 committed
11
import { dyRoutes } from '../../routes/config';
12
const pkg = require('../../../package.json');
邓晓峰's avatar
邓晓峰 committed
13
const { renderRoutes } = helpers;
14
const config = require('../../../config/config');
15

yzl's avatar
yzl committed
16 17
const App = props => {
  useEffect(() => {
杨思琦's avatar
杨思琦 committed
18 19
    event.emit('loading', props.loading);
  }, [props.loading]);
邓晓峰's avatar
邓晓峰 committed
20
  const metaSecurity = /https/.test(window.location.protocol) ? (
杨思琦's avatar
杨思琦 committed
21
    <meta httpEquiv="Content-Security-Policy" content="upgrade-insecure-requests" />
邓晓峰's avatar
邓晓峰 committed
22
  ) : null;
杨思琦's avatar
杨思琦 committed
23 24 25 26
  const shortcut =
    props?.global?.shortcutIcon?.indexOf('CityTemp') > -1
      ? props?.global?.shortcutIcon
      : `civweb4/${props?.global?.shortcutIcon}`;
dengxiaofeng's avatar
dengxiaofeng committed
27 28
  return (
    <>
邓晓峰's avatar
邓晓峰 committed
29 30
      <Helmet title={`${(props.global && props.global.title) || defaultSetting.title}`}>
        <title>{`${(props.global && props.global.title) || defaultSetting.title}`}</title>
杨思琦's avatar
杨思琦 committed
31 32
        {/* <link rel='shortcut icon'
              href={`${window.location.origin}/web4/${props.global && props.global.shortcutIcon}`} /> */}
杨思琦's avatar
杨思琦 committed
33
        {props?.global?.shortcutIcon && <link rel="shortcut icon" href={`${window.location.origin}/${shortcut}`} />}
邓晓峰's avatar
邓晓峰 committed
34
        {metaSecurity}
杨思琦's avatar
杨思琦 committed
35
        {props?.global?.title && <meta name="description" content={`${props.global.title}`} />}
dengxiaofeng's avatar
dengxiaofeng committed
36
      </Helmet>
37
      <Router basename={config.base || pkg.name.toLocaleLowerCase() || ''}>
杨思琦's avatar
杨思琦 committed
38 39
        {window?.qiankunIsCache ? (
          <AliveScope>
杨思琦's avatar
杨思琦 committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
            <Suspense fallback={<></>}>
              <Switch>
                {renderRoutes(
                  'panda-console-base',
                  dyRoutes(
                    props.menu || [],
                    props.global && props.global.layout,
                    (props.global && props.global.theme) || 'dark',
                  ).routes,
                )}
              </Switch>
            </Suspense>
          </AliveScope>
        ) : (
          <Suspense fallback={<></>}>
杨思琦's avatar
杨思琦 committed
55 56 57 58 59 60 61 62 63 64
            <Switch>
              {renderRoutes(
                'panda-console-base',
                dyRoutes(
                  props.menu || [],
                  props.global && props.global.layout,
                  (props.global && props.global.theme) || 'dark',
                ).routes,
              )}
            </Switch>
杨思琦's avatar
杨思琦 committed
65
          </Suspense>
杨思琦's avatar
杨思琦 committed
66
        )}
dengxiaofeng's avatar
dengxiaofeng committed
67 68 69
      </Router>
    </>
  );
杨思琦's avatar
杨思琦 committed
70
};
dengxiaofeng's avatar
dengxiaofeng committed
71

叶飞's avatar
叶飞 committed
72 73
const mapStateToProps = state => ({
  global: state.getIn(['global', 'globalConfig']),
74
  menu: state.getIn(['global', 'menu']),
杨思琦's avatar
杨思琦 committed
75
  products: state.getIn(['global', 'products']),
76
  flatMenu: state.getIn(['global', 'flatMenu']),
叶飞's avatar
叶飞 committed
77
});
邓晓峰's avatar
邓晓峰 committed
78 79 80 81
export default connect(
  mapStateToProps,
  null,
)(App);