import React, { useState, useRef, useEffect, useMemo } from "react"; 
 | 
import { Route } from "react-router-dom"; 
 | 
import { 
 | 
  Admin, 
 | 
  Resource, 
 | 
  CustomRoutes, 
 | 
  localStorageStore, 
 | 
  useStore, 
 | 
  StoreContextProvider, 
 | 
  resolveBrowserLocale, 
 | 
} from "react-admin"; 
 | 
import polyglotI18nProvider from "ra-i18n-polyglot"; 
 | 
import englishMessages from "./i18n/en"; 
 | 
import zhMessages from "./i18n/zh"; 
 | 
import { Layout } from "./layout"; 
 | 
import AuthProvider from "./config/authProvider"; 
 | 
import DataProvider from "./config/dataProvider"; 
 | 
import Dashboard from "./page/dashboard"; 
 | 
import Settings from "./page/settings"; 
 | 
import Login from "./page/login"; 
 | 
import * as Common from "./utils/common"; 
 | 
import { themes } from "./themes/themes"; 
 | 
import { 
 | 
  SPA_NAME, 
 | 
  SPA_VERSION, 
 | 
  DEFAULT_THEME_NAME, 
 | 
  DEFAULT_THEME_MODE, 
 | 
  DATA_PROVIDER_SPRING, 
 | 
} from "./config/setting"; 
 | 
import ResourceContent from "./page/ResourceContent"; 
 | 
import { getSystemInfo, getSystemDicts, tenants } from "@/api/auth"; 
 | 
import chineseMessages from 'ra-language-chinese'; 
 | 
  
 | 
const i18nProvider = polyglotI18nProvider( 
 | 
  (locale) => { 
 | 
    if (locale === "en") { 
 | 
      return import("./i18n/en").then((messages) => messages.default); 
 | 
    } 
 | 
    return { ...chineseMessages, ...zhMessages }; 
 | 
  }, 
 | 
  "zh", 
 | 
  [ 
 | 
    { locale: "en", name: "English" }, 
 | 
    { locale: "zh", name: "简体中文" }, 
 | 
  ], 
 | 
  { 
 | 
    // msg in console 
 | 
    allowMissing: true, 
 | 
  }, 
 | 
); 
 | 
  
 | 
const store = localStorageStore(SPA_VERSION, SPA_NAME); 
 | 
  
 | 
const App = () => { 
 | 
  const [themeName] = useStore("themeName", DEFAULT_THEME_NAME); 
 | 
  const lightTheme = themes.find((theme) => theme.name === themeName)?.light; 
 | 
  const darkTheme = themes.find((theme) => theme.name === themeName)?.dark; 
 | 
  
 | 
  useEffect(() => { 
 | 
    getSystemInfo().then((data) => { 
 | 
      localStorage.setItem("system", JSON.stringify(data)); 
 | 
    }) 
 | 
    getSystemDicts().then(data => { 
 | 
      localStorage.setItem('sys_dicts', JSON.stringify(data)); 
 | 
    }) 
 | 
  }, []); 
 | 
  
 | 
  return ( 
 | 
    <> 
 | 
      <Admin 
 | 
        disableTelemetry 
 | 
        layout={Layout} 
 | 
        authProvider={AuthProvider} 
 | 
        store={store} 
 | 
        lightTheme={lightTheme} 
 | 
        darkTheme={darkTheme} 
 | 
        defaultTheme={DEFAULT_THEME_MODE} 
 | 
        i18nProvider={i18nProvider} 
 | 
        dataProvider={DataProvider(DATA_PROVIDER_SPRING)} 
 | 
        loginPage={Login} 
 | 
        dashboard={Dashboard} 
 | 
      > 
 | 
        {(permissions) => ( 
 | 
          <> 
 | 
            {Common.extractNavMenus(permissions)?.map((node) => { 
 | 
              return ( 
 | 
                <Resource 
 | 
                  key={node.id} 
 | 
                  name={node.component} 
 | 
                  {...ResourceContent(node)} 
 | 
                /> 
 | 
              ); 
 | 
            })} 
 | 
          </> 
 | 
        )} 
 | 
        {/* CustomRoutes don't trigger checkAuth */} 
 | 
        <CustomRoutes> 
 | 
          <Route path="/dashboard" element={<Dashboard />} /> 
 | 
          <Route path="/settings" element={<Settings />} /> 
 | 
        </CustomRoutes> 
 | 
      </Admin> 
 | 
    </> 
 | 
  ); 
 | 
}; 
 | 
  
 | 
const AppWrapper = () => ( 
 | 
  <StoreContextProvider value={store}> 
 | 
    <App /> 
 | 
  </StoreContextProvider> 
 | 
); 
 | 
  
 | 
export default AppWrapper; 
 |