123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // @flow
-
-
- import {
- PostMessageTransportBackend,
- Transport
- } from '../../../modules/transport';
- import {
- CONFERENCE_JOINED,
- CONFERENCE_LEFT
- } from '../base/conference';
- import { MiddlewareRegistry } from '../base/redux';
- import { destroyLocalTracks } from '../base/tracks';
-
- import { SUSPEND_DETECTED } from './actionTypes';
- import {
- setTransport,
- suspendDetected
- } from './actions';
-
- declare var APP: Object;
-
- MiddlewareRegistry.register(store => next => action => {
- const result = next(action);
- const { dispatch, getState } = store;
-
- switch (action.type) {
- case CONFERENCE_JOINED: {
-
- // listens for messages about suspend from power-monitor
- const transport = new Transport({
- backend: new PostMessageTransportBackend({
- postisOptions: { scope: 'jitsi-power-monitor' }
- })
- });
-
- transport.on('event', event => {
- if (event && event.name === 'power-monitor' && event.event === 'suspend') {
-
- dispatch(suspendDetected());
-
- return true;
- }
-
- return false;
- });
-
- dispatch(setTransport(transport));
- break;
- }
-
- case CONFERENCE_LEFT: {
- const { transport } = getState()['features/power-monitor'];
-
- if (transport) {
- transport.dispose();
- }
-
- dispatch(setTransport());
- break;
- }
-
- case SUSPEND_DETECTED: {
- dispatch(destroyLocalTracks());
-
- // FIXME: when refactoring conference.js
- APP.conference.onSuspendDetected();
-
- APP.API.notifySuspendDetected();
- break;
- }
- }
-
- return result;
- });
|