mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-10 17:38:39 +00:00
Also unify the mobile and web features into one, even though internally they still have separate ways to enable the functionality.
64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
// @flow
|
|
|
|
import UIEvents from '../../../service/UI/UIEvents';
|
|
import { getCurrentConference } from '../base/conference';
|
|
import { getLocalParticipant } from '../base/participants';
|
|
import { MiddlewareRegistry, StateListenerRegistry } from '../base/redux';
|
|
|
|
import { TOGGLE_SHARED_VIDEO } from './actionTypes';
|
|
import { setDisableButton } from './actions.web';
|
|
import { SHARED_VIDEO } from './constants';
|
|
|
|
declare var APP: Object;
|
|
|
|
/**
|
|
* Middleware that captures actions related to video sharing and updates
|
|
* components not hooked into redux.
|
|
*
|
|
* @param {Store} store - The redux store.
|
|
* @returns {Function}
|
|
*/
|
|
// eslint-disable-next-line no-unused-vars
|
|
MiddlewareRegistry.register(store => next => action => {
|
|
if (typeof APP === 'undefined') {
|
|
return next(action);
|
|
}
|
|
|
|
switch (action.type) {
|
|
case TOGGLE_SHARED_VIDEO:
|
|
APP.UI.emitEvent(UIEvents.SHARED_VIDEO_CLICKED);
|
|
break;
|
|
}
|
|
|
|
return next(action);
|
|
});
|
|
|
|
/**
|
|
* Set up state change listener to disable or enable the share video button in
|
|
* the toolbar menu.
|
|
*/
|
|
StateListenerRegistry.register(
|
|
state => getCurrentConference(state),
|
|
(conference, store, previousConference) => {
|
|
if (conference && conference !== previousConference) {
|
|
conference.addCommandListener(SHARED_VIDEO,
|
|
({ attributes }) => {
|
|
|
|
const { dispatch, getState } = store;
|
|
const { from } = attributes;
|
|
const localParticipantId = getLocalParticipant(getState()).id;
|
|
const status = attributes.state;
|
|
|
|
if (status === 'playing') {
|
|
if (localParticipantId !== from) {
|
|
dispatch(setDisableButton(true));
|
|
}
|
|
} else if (status === 'stop') {
|
|
dispatch(setDisableButton(false));
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|