Skip to content

Commit

Permalink
Merge pull request #2046 from dtwiers/feature/enable-custom-redux-mid…
Browse files Browse the repository at this point in the history
…dleware

feat: Enable redux middleware in FSApp config
William Sedlacek authored Jun 11, 2021

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents 1f67c6e + 56b3d32 commit 0583703
Showing 3 changed files with 10 additions and 5 deletions.
3 changes: 2 additions & 1 deletion packages/fsapp/src/fsapp/FSAppBase.tsx
Original file line number Diff line number Diff line change
@@ -53,7 +53,8 @@ export abstract class FSAppBase {
getReduxStore = async (initialState?: any) => {
return configureStore(
initialState || this.appConfig.initialState,
this.appConfig.reducers
this.appConfig.reducers,
this.appConfig.storeMiddleware || []
);
}

10 changes: 6 additions & 4 deletions packages/fsapp/src/store/configureStore.ts
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ import {
applyMiddleware,
compose,
createStore,
Middleware,
PreloadedState,
ReducersMapObject,
Store
@@ -12,12 +13,12 @@ import thunk from 'redux-thunk';
import setupReducers from '../reducers';

const anyWindow: any = window;
let middleware = [thunk];
let standardMiddleware = [thunk];

if (__DEV__) {
const reduxImmutableStateInvariant = require('redux-immutable-state-invariant').default();
const logger = createLogger({ collapsed: true });
middleware = [...middleware, reduxImmutableStateInvariant, logger];
standardMiddleware = [...standardMiddleware, reduxImmutableStateInvariant, logger];
}
const composeEnhancers =
// tslint:disable-next-line
@@ -26,11 +27,12 @@ const composeEnhancers =
export default function configureStore<S, A extends Action, Ext, StateExt>(
// tslint:disable-next-line: no-object-literal-type-assertion
initialState: PreloadedState<S> = {} as PreloadedState<S>,
reducers: ReducersMapObject<S, A>
reducers: ReducersMapObject<S, A>,
middleware: Middleware[]
): Store<S & StateExt, A> & Ext {
return createStore<S, A, Ext, StateExt>(
setupReducers<S, A>(reducers),
initialState,
composeEnhancers(applyMiddleware(...middleware))
composeEnhancers(applyMiddleware(...middleware, ...standardMiddleware))
);
}
2 changes: 2 additions & 0 deletions packages/fsapp/src/types/index.ts
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ import { CommerceTypes } from '@brandingbrand/fscommerce';
import { ImageRequireSource, ModalProps, ViewStyle } from 'react-native';
import { PathFunction } from 'path-to-regexp';
import type { Request } from 'express';
import { Middleware } from 'redux';

export interface DrawerType {
screen: string;
@@ -110,6 +111,7 @@ export interface AppConfigType {
bottomTabsId?: string;
bottomTabsOptions?: Options;
routerConfig?: RouterConfig;
storeMiddleware?: Middleware[];
notFoundRedirect?: RoutableComponentClass | NavLayout | true;
uncachedData?: (initialState: any, req?: Request) => Promise<SSRData>;
cachedData?: (initialState: any, req?: Request) => Promise<SSRData>;

0 comments on commit 0583703

Please sign in to comment.