ref(mobile/proximity): convert middleware to a state listener

This commit is contained in:
paweldomas 2018-05-25 15:41:43 -05:00 committed by Saúl Ibarra Corretgé
parent bcb955ea72
commit d26d1ff925
1 changed files with 12 additions and 32 deletions

View File

@ -1,43 +1,23 @@
import { NativeModules } from 'react-native';
import {
CONFERENCE_FAILED,
CONFERENCE_JOINED,
CONFERENCE_LEFT,
SET_AUDIO_ONLY
} from '../../base/conference';
import { MiddlewareRegistry } from '../../base/redux';
import { getCurrentConference } from '../../base/conference';
import { StateListenerRegistry } from '../../base/redux';
/**
* Middleware which enables / disables the proximity sensor in accord with
* conference-related actions. If the proximity sensor is enabled, it will dim
* State listener which enables / disables the proximity sensor based on the
* current conference state. If the proximity sensor is enabled, it will dim
* the screen and disable touch controls when an object is nearby. The
* functionality is enabled when a conference is in audio-only mode.
*
* @param {Store} store - The redux store.
* @returns {Function}
*/
MiddlewareRegistry.register(({ getState }) => next => action => {
const result = next(action);
StateListenerRegistry.register(
/* selector */ state => {
const { audioOnly } = state['features/base/conference'];
const conference = getCurrentConference(state);
switch (action.type) {
case CONFERENCE_FAILED:
case CONFERENCE_LEFT:
_setProximityEnabled(false);
break;
case CONFERENCE_JOINED:
case SET_AUDIO_ONLY: {
const { audioOnly, conference }
= getState()['features/base/conference'];
conference && _setProximityEnabled(audioOnly);
break;
}
}
return result;
});
return Boolean(conference && audioOnly);
},
/* listener */ proximityEnabled => _setProximityEnabled(proximityEnabled)
);
/**
* Enables / disables the proximity sensor. If the proximity sensor is enabled,