[RN] Cleanup subscriptions for the invite module

This commit is contained in:
Saúl Ibarra Corretgé 2018-05-02 13:37:20 +02:00 committed by Lyubo Marinov
parent cf6dd98b02
commit ed7d8ac57e
1 changed files with 29 additions and 0 deletions

View File

@ -33,6 +33,9 @@ const { Invite } = NativeModules;
*/
Invite && MiddlewareRegistry.register(store => next => action => {
switch (action.type) {
case _SET_EMITTER_SUBSCRIPTIONS:
return _setEmitterSubscriptions(store, next, action);
case APP_WILL_MOUNT:
return _appWillMount(store, next, action);
@ -206,3 +209,29 @@ function _onPerformQuery(
translatedResults);
});
}
/**
* Notifies the feature invite that the action
* {@link _SET_EMITTER_SUBSCRIPTIONS} is being dispatched within a specific
* redux {@code store}.
*
* @param {Store} store - The redux store in which the specified {@code action}
* is being dispatched.
* @param {Dispatch} next - The redux dispatch function to dispatch the
* specified {@code action} to the specified {@code store}.
* @param {Action} action - The redux action {@code _SET_EMITTER_SUBSCRIPTIONS}
* which is being dispatched in the specified {@code store}.
* @private
* @returns {*}
*/
function _setEmitterSubscriptions({ getState }, next, action) {
const { emitterSubscriptions } = getState()['features/invite'];
if (emitterSubscriptions) {
for (const subscription of emitterSubscriptions) {
subscription.remove();
}
}
return next(action);
}