Skip to content

Commit

Permalink
Merge pull request #11108 from codeSafari10/connections-page-rtk
Browse files Browse the repository at this point in the history
Enhance rtk and redux global injection
  • Loading branch information
aabidsofi19 committed Jun 4, 2024
2 parents a692d21 + dcc2784 commit b9dba03
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 9 deletions.
7 changes: 7 additions & 0 deletions ui/lib/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from '@redux-devtools/extension';
import thunkMiddleware from 'redux-thunk';
import { fromJS } from 'immutable';
import { createContext } from 'react';
import { createDispatchHook, createSelectorHook } from 'react-redux';

const initialState = fromJS({
page: {
Expand Down Expand Up @@ -430,3 +432,8 @@ export const selectK8sContexts = (state) => {
const k8scontext = state.get('k8sConfig');
return k8scontext?.toJS?.() || k8scontext;
};

export const LegacyStoreContext = createContext(null);

export const useLegacySelector = createSelectorHook(LegacyStoreContext);
export const useLegacyDispactch = createDispatchHook(LegacyStoreContext);
23 changes: 15 additions & 8 deletions ui/pages/_app.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import {
toggleCatalogContent,
updateTelemetryUrls,
setConnectionMetadata,
LegacyStoreContext,
} from '../lib/store';
import theme, { styles } from '../themes';
import { getConnectionIDsFromContextIds, getK8sConfigIdsFromK8sConfig } from '../utils/multi-ctx';
Expand Down Expand Up @@ -65,6 +66,8 @@ import { ability } from '../utils/can';
import { getCredentialByID } from '@/api/credentials';
import { DynamicComponentProvider } from '@/utils/context/dynamicContext';
import { useTheme } from '@material-ui/core/styles';
import { store } from '../store';
import { RTKContext } from '@/store/hooks';

if (typeof window !== 'undefined') {
require('codemirror/mode/yaml/yaml');
Expand Down Expand Up @@ -798,14 +801,18 @@ const MesheryWithRedux = withStyles(styles)(

const MesheryAppWrapper = (props) => {
return (
<Provider store={props.store}>
<Head>
<link rel="shortcut icon" href="/static/img/meshery-logo/meshery-logo.svg" />
<title>Meshery</title>
</Head>
<MuiPickersUtilsProvider utils={MomentUtils}>
<MesheryWithRedux {...props} />
</MuiPickersUtilsProvider>
<Provider store={store} context={RTKContext}>
<Provider store={props.store} context={LegacyStoreContext}>
<Provider store={props.store}>
<Head>
<link rel="shortcut icon" href="/static/img/meshery-logo/meshery-logo.svg" />
<title>Meshery</title>
</Head>
<MuiPickersUtilsProvider utils={MomentUtils}>
<MesheryWithRedux {...props} />
</MuiPickersUtilsProvider>
</Provider>
</Provider>
</Provider>
);
};
Expand Down
16 changes: 15 additions & 1 deletion ui/rtk-query/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { useSelectorRtk, useDispatchRtk, useStoreRtk } from '@/store/hooks';
import {
coreModule,
reactHooksModule,
buildCreateApi,
fetchBaseQuery,
} from '@reduxjs/toolkit/query/react';

const createApi = buildCreateApi(
coreModule(),
reactHooksModule({
useSelector: useSelectorRtk,
useDispatch: useDispatchRtk,
useStore: useStoreRtk,
}),
);
export const api = createApi({
reducerPath: 'mesheryApi',
baseQuery: fetchBaseQuery({ baseUrl: '/api/' }),
Expand Down
8 changes: 8 additions & 0 deletions ui/store/hooks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { createContext } from 'react';
import { createDispatchHook, createSelectorHook, createStoreHook } from 'react-redux';

export const RTKContext = createContext(null);

export const useSelectorRtk = createSelectorHook(RTKContext);
export const useDispatchRtk = createDispatchHook(RTKContext);
export const useStoreRtk = createStoreHook(RTKContext);

0 comments on commit b9dba03

Please sign in to comment.