Socket
Socket
Sign inDemoInstall

react-navigation-redux-helpers

Package Overview
Dependencies
524
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.1 to 1.0.2

src/middleware.js

9

package.json
{
"name": "react-navigation-redux-helpers",
"description": "Redux middleware and utils for React Navigation",
"version": "1.0.1",
"version": "1.0.2",
"main": "src/index.js",

@@ -18,3 +18,8 @@ "author": "Ashoat Tevosyan (https://github.com/ashoat)",

},
"files": [ "src" ]
"files": [
"src"
],
"peerDependencies": {
"react-navigation": "^1.1.2"
}
}
// @flow
import type {
NavigationEventCallback,
NavigationState,
} from 'react-navigation';
import type { Middleware } from 'redux';
import { createNavigationReducer } from './reducer';
import invariant from 'invariant';
const reduxSubscribers = new Map();
function createReactNavigationReduxMiddleware<State: {}>(
key: string,
navStateSelector: (state: State) => NavigationState,
): Middleware<State, *, *> {
reduxSubscribers.set(key, new Set());
return store => next => action => {
const oldState = store.getState();
const result = next(action);
const newState = store.getState();
const subscribers = reduxSubscribers.get(key);
invariant(subscribers, `subscribers set should exist for ${key}`);
subscribers.forEach(subscriber =>
subscriber({
type: 'action',
action,
state: navStateSelector(newState),
lastState: navStateSelector(oldState),
})
);
return result;
};
}
function createReduxBoundAddListener(key: string) {
invariant(
reduxSubscribers.has(key),
"Cannot listen for a key that isn't associated with a Redux store. " +
'First call `createReactNavigationReduxMiddleware` so that we know ' +
'when to trigger your listener.'
);
return (eventName: string, handler: NavigationEventCallback) => {
if (eventName !== 'action') {
return { remove: () => {} };
}
const subscribers = reduxSubscribers.get(key);
invariant(subscribers, `subscribers set should exist for ${key}`);
subscribers.add(handler);
return {
remove: () => {
subscribers.delete(handler);
},
};
};
}
export {
createReactNavigationReduxMiddleware,
createReduxBoundAddListener,
};
export * from './types';
export * from './middleware';
export { createNavigationReducer };
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc