Using appContext in DataSourceWrapper and createRoutes
This commit is contained in:
parent
c2853f719a
commit
70ad940941
@ -7,7 +7,7 @@ import { ThemeWrapper } from '@ohif/ui';
|
|||||||
// TODO: Should this influence study list?
|
// TODO: Should this influence study list?
|
||||||
import { appConfigContext } from './state/appConfig.context';
|
import { appConfigContext } from './state/appConfig.context';
|
||||||
import { useAppConfig } from './hooks/useAppConfig';
|
import { useAppConfig } from './hooks/useAppConfig';
|
||||||
import createRoutes from './routes';
|
import createAppRoutes from './routes';
|
||||||
import appInit from './appInit.js';
|
import appInit from './appInit.js';
|
||||||
|
|
||||||
// Temporarily for testing
|
// Temporarily for testing
|
||||||
@ -20,34 +20,26 @@ const Router = JSON.parse(process.env.USE_HASH_ROUTER)
|
|||||||
? HashRouter
|
? HashRouter
|
||||||
: BrowserRouter;
|
: BrowserRouter;
|
||||||
|
|
||||||
let appConfig, commandsManager, extensionManager, servicesManager;
|
let commandsManager, extensionManager, servicesManager;
|
||||||
|
|
||||||
function App({ config, defaultExtensions }) {
|
function App({ config, defaultExtensions }) {
|
||||||
const init = appInit(config, defaultExtensions);
|
const init = appInit(config, defaultExtensions);
|
||||||
|
|
||||||
// Set above for named export
|
// Set above for named export
|
||||||
appConfig = init.appConfig;
|
|
||||||
commandsManager = init.commandsManager;
|
commandsManager = init.commandsManager;
|
||||||
extensionManager = init.extensionManager;
|
extensionManager = init.extensionManager;
|
||||||
servicesManager = init.servicesManager;
|
servicesManager = init.servicesManager;
|
||||||
|
|
||||||
// TODO: Expose configuration w/ context?
|
// Set appConfig
|
||||||
// See: `setConfiguration` in master
|
const appConfigContextApi = useAppConfig(init.appConfig);
|
||||||
const appConfigImp = useAppConfig();
|
const { routerBasename, modes, dataSources } = appConfigContextApi.appConfig;
|
||||||
console.log('appConfigImp: ', appConfigImp);
|
// Use config to create routes
|
||||||
|
const appRoutes = createAppRoutes(modes, dataSources, extensionManager);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<appConfigContext.Provider value={appConfigImp}>
|
<appConfigContext.Provider value={appConfigContextApi}>
|
||||||
<Router basename={appConfig.routerBasename}>
|
<Router basename={routerBasename}>
|
||||||
<ThemeWrapper>
|
<ThemeWrapper>{appRoutes}</ThemeWrapper>
|
||||||
{createRoutes(
|
|
||||||
appConfig.modes,
|
|
||||||
appConfig.dataSources,
|
|
||||||
extensionManager,
|
|
||||||
appConfig,
|
|
||||||
appConfigImp
|
|
||||||
)}
|
|
||||||
</ThemeWrapper>
|
|
||||||
</Router>
|
</Router>
|
||||||
</appConfigContext.Provider>
|
</appConfigContext.Provider>
|
||||||
);
|
);
|
||||||
@ -92,4 +84,4 @@ App.defaultProps = {
|
|||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|
||||||
export { appConfig, commandsManager, extensionManager, servicesManager };
|
export { commandsManager, extensionManager, servicesManager };
|
||||||
|
|||||||
@ -59,6 +59,11 @@ function appInit(appConfigOrFunc, defaultExtensions) {
|
|||||||
// TODO: We no longer init webWorkers at app level
|
// TODO: We no longer init webWorkers at app level
|
||||||
// TODO: We no longer init the user Manager
|
// TODO: We no longer init the user Manager
|
||||||
|
|
||||||
|
// TODO: Remove this
|
||||||
|
if (!appConfig.modes.length) {
|
||||||
|
appConfig.modes.push(window.exampleMode);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
appConfig,
|
appConfig,
|
||||||
commandsManager,
|
commandsManager,
|
||||||
|
|||||||
@ -4,14 +4,14 @@ import { useCallback, useState } from 'react';
|
|||||||
* Implements the state/methods defined in `appConfig.context`.
|
* Implements the state/methods defined in `appConfig.context`.
|
||||||
*/
|
*/
|
||||||
export const useAppConfig = initialValue => {
|
export const useAppConfig = initialValue => {
|
||||||
const [config, setConfig] = useState(initialValue || {});
|
const [appConfig, setAppConfig] = useState(initialValue || {});
|
||||||
|
|
||||||
const setCurrentConfig = useCallback(updatedConfig => {
|
const setCurrentAppConfig = useCallback(updatedConfig => {
|
||||||
setConfig(updatedConfig);
|
setAppConfig(updatedConfig);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
config,
|
appConfig,
|
||||||
setCurrentConfig,
|
setCurrentAppConfig,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
/* eslint-disable react/jsx-props-no-spreading */
|
/* eslint-disable react/jsx-props-no-spreading */
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useContext, useEffect, useState } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { MODULE_TYPES } from '@ohif/core';
|
import { MODULE_TYPES } from '@ohif/core';
|
||||||
//
|
//
|
||||||
import { appConfig, extensionManager } from '../App.jsx';
|
import { appConfigContext } from '../state/appConfig.context';
|
||||||
|
import { extensionManager } from '../App.jsx';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses route properties to determine the data source that should be passed
|
* Uses route properties to determine the data source that should be passed
|
||||||
@ -14,6 +15,7 @@ import { appConfig, extensionManager } from '../App.jsx';
|
|||||||
* @param {function} props.children - Layout Template React Component
|
* @param {function} props.children - Layout Template React Component
|
||||||
*/
|
*/
|
||||||
function DataSourceWrapper(props) {
|
function DataSourceWrapper(props) {
|
||||||
|
const { appConfig } = useContext(appConfigContext);
|
||||||
const { children: LayoutTemplate, history, ...rest } = props;
|
const { children: LayoutTemplate, history, ...rest } = props;
|
||||||
const queryFilterValues = _getQueryFilterValues(history.location.search);
|
const queryFilterValues = _getQueryFilterValues(history.location.search);
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import NotFound from './NotFound';
|
|||||||
import buildModeRoutes from './buildModeRoutes';
|
import buildModeRoutes from './buildModeRoutes';
|
||||||
|
|
||||||
// TODO: Make these configurable
|
// TODO: Make these configurable
|
||||||
|
// TODO: Include "routes" debug route if dev build
|
||||||
const bakedInRoutes = [
|
const bakedInRoutes = [
|
||||||
// WORK LIST
|
// WORK LIST
|
||||||
{
|
{
|
||||||
@ -19,16 +20,13 @@ const bakedInRoutes = [
|
|||||||
{ component: NotFound },
|
{ component: NotFound },
|
||||||
];
|
];
|
||||||
|
|
||||||
const createRoutes = (modes, dataSources, extensionManager, t, t2) => {
|
const createRoutes = (modes, dataSources, extensionManager) => {
|
||||||
console.log('Creating Routes: ', routes, bakedInRoutes);
|
|
||||||
console.log(modes, dataSources, extensionManager, t, t2);
|
|
||||||
if (!modes.length) {
|
|
||||||
modes.push(window.exampleMode);
|
|
||||||
}
|
|
||||||
const routes = buildModeRoutes(modes, dataSources, extensionManager) || [];
|
const routes = buildModeRoutes(modes, dataSources, extensionManager) || [];
|
||||||
// TODO: Shouldn't need to guard input routes with an empty array?
|
// TODO: Shouldn't need to guard input routes with an empty array?
|
||||||
const allRoutes = [...(routes || []), ...bakedInRoutes];
|
const allRoutes = [...(routes || []), ...bakedInRoutes];
|
||||||
|
|
||||||
|
console.log('Creating Routes: ', modes, dataSources, routes, bakedInRoutes, allRoutes);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Switch>
|
<Switch>
|
||||||
{allRoutes.map((route, i) => {
|
{allRoutes.map((route, i) => {
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { createContext } from 'react';
|
import { createContext } from 'react';
|
||||||
|
|
||||||
export const APP_CONFIG_DEFAULT_VALUE = {
|
export const APP_CONFIG_DEFAULT_VALUE = {
|
||||||
config: {},
|
appConfig: {},
|
||||||
setCurrentConfig: () => {},
|
setCurrentAppConfig: () => {},
|
||||||
};
|
};
|
||||||
|
|
||||||
export const appConfigContext = createContext(APP_CONFIG_DEFAULT_VALUE);
|
export const appConfigContext = createContext(APP_CONFIG_DEFAULT_VALUE);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user