|
|
@@ -1,56 +1,14 @@
|
|
|
import {Home} from '@pages';
|
|
|
import {HOME_PATH, MAIN_PATH, MENU_PATH} from './name';
|
|
|
import {RouteObject, createBrowserRouter} from 'react-router-dom';
|
|
|
-import {userStore} from '@stores';
|
|
|
-import {getSettings} from '@apis';
|
|
|
import NotFound from '@pages/not-found';
|
|
|
import Main from '@pages/main';
|
|
|
import {Menu} from './lazy';
|
|
|
-import {PageSettingsData} from '@models';
|
|
|
-
|
|
|
-async function preloadSettings(url: string) {
|
|
|
- try {
|
|
|
- const {id} = userStore.getState();
|
|
|
-
|
|
|
- const result = await getSettings({userId: String(id), track: url});
|
|
|
-
|
|
|
- if (result.msg === '200')
|
|
|
- return new Map([[url, result.data]]);
|
|
|
-
|
|
|
- return new Map([[url, null]]);
|
|
|
- } catch (error) {
|
|
|
- return new Map([[url, null]]);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-async function preloadSettingsList(keys: string[]) {
|
|
|
- const data = await Promise.allSettled(keys.map(key => preloadSettings(key)));
|
|
|
- const map = new Map<string, PageSettingsData | null>();
|
|
|
-
|
|
|
- data.forEach(function(val, idx) {
|
|
|
- const key = keys[idx];
|
|
|
-
|
|
|
- if (val.status === 'fulfilled')
|
|
|
- map.set(key, val.value.get(key) || null);
|
|
|
- else
|
|
|
- map.set(key, null);
|
|
|
- });
|
|
|
-
|
|
|
- return map;
|
|
|
-}
|
|
|
|
|
|
const routes: RouteObject[] = [
|
|
|
{path: HOME_PATH, element: <Home />},
|
|
|
{path: MAIN_PATH, element: <Main />},
|
|
|
- {
|
|
|
- path: MENU_PATH,
|
|
|
- element: <Menu />,
|
|
|
- async loader() {
|
|
|
- const keys = [MENU_PATH, '/menu_second_level'];
|
|
|
-
|
|
|
- return await preloadSettingsList(keys);
|
|
|
- },
|
|
|
- },
|
|
|
+ {path: MENU_PATH, element: <Menu />},
|
|
|
{path: '*', element: <NotFound />},
|
|
|
];
|
|
|
|