Remove StrapiProvider in favor of StrapiAppProvider

Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2021-05-12 12:15:16 +02:00
parent be9cc3731c
commit 9cdbfb024a
14 changed files with 76 additions and 75 deletions

View File

@ -3,7 +3,7 @@ import { Provider } from 'react-redux';
import { BrowserRouter } from 'react-router-dom';
import { QueryClientProvider, QueryClient } from 'react-query';
import { ThemeProvider } from 'styled-components';
import { LibraryProvider, StrapiProvider } from '@strapi/helper-plugin';
import { LibraryProvider, StrapiAppProvider } from '@strapi/helper-plugin';
import configureStore from './core/store/configureStore';
import { Plugin } from './core/apis';
import basename from './utils/basename';
@ -149,9 +149,8 @@ class StrapiApp {
<GlobalStyle />
<Fonts />
<Provider store={store}>
<LibraryProvider components={components} fields={fields}>
{/* TODO remove this */}
<StrapiProvider strapi={this}>
<StrapiAppProvider getPlugin={this.getPlugin} plugins={this.plugins}>
<LibraryProvider components={components} fields={fields}>
<LanguageProvider messages={this.translations}>
<>
<AutoReloadOverlayBlocker />
@ -162,8 +161,8 @@ class StrapiApp {
</BrowserRouter>
</>
</LanguageProvider>
</StrapiProvider>
</LibraryProvider>
</LibraryProvider>
</StrapiAppProvider>
</Provider>
</ThemeProvider>
</QueryClientProvider>

View File

@ -1,13 +1,13 @@
import React, { useReducer, useRef } from 'react';
import { LoadingIndicatorPage, useStrapi } from '@strapi/helper-plugin';
import { LoadingIndicatorPage, useStrapiApp } from '@strapi/helper-plugin';
import Admin from '../../pages/Admin';
import init from './init';
import reducer, { initialState } from './reducer';
const PluginsInitializer = () => {
// TODO rename strapi to avoid mismatch with the window.strapi
const { strapi: app } = useStrapi();
const [{ plugins }, dispatch] = useReducer(reducer, initialState, () => init(app.plugins));
const { plugins: appPlugins } = useStrapiApp();
const [{ plugins }, dispatch] = useReducer(reducer, initialState, () => init(appPlugins));
const setPlugin = useRef(pluginId => {
dispatch({ type: 'SET_PLUGIN_READY', pluginId });
});

View File

@ -1,5 +1,5 @@
import React from 'react';
import { StrapiProvider } from '@strapi/helper-plugin';
import { StrapiAppProvider } from '@strapi/helper-plugin';
import { render } from '@testing-library/react';
import PluginsInitializer from '../index';
@ -7,11 +7,13 @@ jest.mock('../../../pages/Admin', () => () => <div>ADMIN</div>);
describe('ADMIN | COMPONENTS | PluginsInitializer', () => {
it('should not crash', () => {
const getPlugin = jest.fn();
expect(
render(
<StrapiProvider strapi={{ plugins: {} }}>
<StrapiAppProvider plugins={{}} getPlugin={getPlugin}>
<PluginsInitializer />
</StrapiProvider>
</StrapiAppProvider>
)
);
});

View File

@ -10,7 +10,12 @@
// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED
import React, { memo, useMemo, useState } from 'react';
import { BackHeader, LeftMenuList, LoadingIndicatorPage, useStrapi } from '@strapi/helper-plugin';
import {
BackHeader,
LeftMenuList,
LoadingIndicatorPage,
useStrapiApp,
} from '@strapi/helper-plugin';
import { Switch, Redirect, Route, useParams, useHistory } from 'react-router-dom';
import { useIntl } from 'react-intl';
import HeaderSearch from '../../components/HeaderSearch';
@ -37,10 +42,7 @@ import {
function SettingsPage() {
const { settingId } = useParams();
const { goBack } = useHistory();
// TODO
const {
strapi: { plugins },
} = useStrapi();
const { plugins } = useStrapiApp();
const [headerSearchState, setShowHeaderSearchState] = useState({ show: false, label: '' });
const { isLoading, menu } = useSettingsMenu();
const { formatMessage } = useIntl();

View File

@ -6,7 +6,7 @@ import {
LoadingIndicatorPage,
useGlobalContext,
PopUpWarning,
useStrapi,
useStrapiApp,
useUser,
} from '@strapi/helper-plugin';
import { useHistory, useLocation, useRouteMatch, Redirect } from 'react-router-dom';
@ -63,10 +63,8 @@ const DataManagerProvider = ({
reservedNames,
}) => {
const dispatch = useDispatch();
// TODO
const {
strapi: { getPlugin },
} = useStrapi();
const { getPlugin } = useStrapiApp();
const { apis } = getPlugin(pluginId);
const [infoModals, toggleInfoModal] = useState({ cancel: false });

View File

@ -10,7 +10,7 @@ import {
getYupInnerErrors,
useGlobalContext,
useQuery,
useStrapi,
useStrapiApp,
InputsIndex,
} from '@strapi/helper-plugin';
import { Button, Text, Padded } from '@buffetjs/core';
@ -72,9 +72,7 @@ const FormModal = () => {
const { push } = useHistory();
const { search } = useLocation();
const { emitEvent, formatMessage } = useGlobalContext();
const {
strapi: { getPlugin },
} = useStrapi();
const { getPlugin } = useStrapiApp();
const ctbPlugin = getPlugin(pluginId);
const ctbFormsAPI = ctbPlugin.apis.forms;
const inputsFromPlugins = ctbFormsAPI.components.inputs;

View File

@ -1,10 +1,10 @@
import useStrapi from '../../hooks/useStrapi';
import useStrapiApp from '../../hooks/useStrapiApp';
const useInjectionZone = area => {
const { strapi: globalStrapi } = useStrapi();
const { getPlugin } = useStrapiApp();
const [pluginName, page, position] = area.split('.');
const plugin = globalStrapi.getPlugin(pluginName);
const plugin = getPlugin(pluginName);
if (!plugin) {
return null;

View File

@ -0,0 +1,11 @@
/**
*
* StrapiAppContext
*
*/
import { createContext } from 'react';
const StrapiAppContext = createContext();
export default StrapiAppContext;

View File

@ -1,11 +0,0 @@
/**
*
* StrapiContext
*
*/
import { createContext } from 'react';
const StrapiContext = createContext();
export default StrapiContext;

View File

@ -1,12 +0,0 @@
/**
*
* useStrapi
*
*/
import { useContext } from 'react';
import StrapiContext from '../../contexts/StrapiContext';
const useStrapi = () => useContext(StrapiContext);
export default useStrapi;

View File

@ -0,0 +1,12 @@
/**
*
* useStrapiApp
*
*/
import { useContext } from 'react';
import StrapiAppContext from '../../contexts/StrapiAppContext';
const useStrapiApp = () => useContext(StrapiAppContext);
export default useStrapiApp;

View File

@ -116,14 +116,14 @@ export { default as ContentManagerEditViewDataManagerContext } from './contexts/
export { default as useContentManagerEditViewDataManager } from './hooks/useContentManagerEditViewDataManager';
export { default as useQuery } from './hooks/useQuery';
export { default as useLibrary } from './hooks/useLibrary';
export { default as useStrapi } from './hooks/useStrapi';
export { default as useStrapiApp } from './hooks/useStrapiApp';
export { default as useUser } from './hooks/useUser';
export { default as useUserPermissions } from './hooks/useUserPermissions';
export { default as useQueryParams } from './hooks/useQueryParams';
// Providers
export { default as StrapiProvider } from './providers/StrapiProvider';
export { default as LibraryProvider } from './providers/LibraryProvider';
export { default as StrapiAppProvider } from './providers/StrapiAppProvider';
// Utils
export { default as auth } from './utils/auth';

View File

@ -0,0 +1,22 @@
/**
*
* StrapiAppProvider
*
*/
import React from 'react';
import PropTypes from 'prop-types';
import StrapiAppContext from '../../contexts/StrapiAppContext';
const StrapiAppProvider = ({ children, getPlugin, plugins }) => {
return (
<StrapiAppContext.Provider value={{ getPlugin, plugins }}>{children}</StrapiAppContext.Provider>
);
};
StrapiAppProvider.propTypes = {
children: PropTypes.node.isRequired,
getPlugin: PropTypes.func.isRequired,
plugins: PropTypes.object.isRequired,
};
export default StrapiAppProvider;

View File

@ -1,20 +0,0 @@
/**
*
* StrapiProvider
*
*/
import React from 'react';
import PropTypes from 'prop-types';
import StrapiContext from '../../contexts/StrapiContext';
const StrapiProvider = ({ children, strapi }) => {
return <StrapiContext.Provider value={{ strapi }}>{children}</StrapiContext.Provider>;
};
StrapiProvider.defaultProps = {};
StrapiProvider.propTypes = {
children: PropTypes.node.isRequired,
strapi: PropTypes.object.isRequired,
};
export default StrapiProvider;