mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-15 10:07:48 +00:00
When the audio-only mode is enabled, turn on the proximity sensor to dim the screen and disable touch controls when there is an object nearby.
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import { NativeModules } from 'react-native';
|
|
|
|
import {
|
|
CONFERENCE_FAILED,
|
|
CONFERENCE_JOINED,
|
|
CONFERENCE_LEFT,
|
|
SET_AUDIO_ONLY
|
|
} from '../../base/conference';
|
|
import { MiddlewareRegistry } 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
|
|
* 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 - Redux store.
|
|
* @returns {Function}
|
|
*/
|
|
MiddlewareRegistry.register(store => next => action => {
|
|
switch (action.type) {
|
|
case CONFERENCE_JOINED: {
|
|
const { audioOnly } = store.getState()['features/base/conference'];
|
|
|
|
_setProximityEnabled(audioOnly);
|
|
break;
|
|
}
|
|
|
|
case CONFERENCE_FAILED:
|
|
case CONFERENCE_LEFT:
|
|
_setProximityEnabled(false);
|
|
break;
|
|
|
|
case SET_AUDIO_ONLY:
|
|
_setProximityEnabled(action.audioOnly);
|
|
break;
|
|
}
|
|
|
|
return next(action);
|
|
});
|
|
|
|
/**
|
|
* Enables / disables the proximity sensor. If the proximity sensor is enabled,
|
|
* it will dim the screen and disable touch controls when an object is nearby.
|
|
*
|
|
* @param {boolean} enabled - True to enable the proximity sensor or false to
|
|
* disable it.
|
|
* @private
|
|
* @returns {void}
|
|
*/
|
|
function _setProximityEnabled(enabled) {
|
|
NativeModules.Proximity.setEnabled(Boolean(enabled));
|
|
}
|