From 29bc18df01c82cefbbc7b78f5aef7b97c2dee0e4 Mon Sep 17 00:00:00 2001 From: Leonard Kim Date: Wed, 28 Nov 2018 11:36:23 -0800 Subject: [PATCH] fix(tile-view): disable tile view on pin, unpin all on view enter --- react/features/video-layout/middleware.any.js | 39 +++++++++++++++++++ .../video-layout/middleware.native.js | 1 + react/features/video-layout/middleware.web.js | 1 + 3 files changed, 41 insertions(+) create mode 100644 react/features/video-layout/middleware.any.js diff --git a/react/features/video-layout/middleware.any.js b/react/features/video-layout/middleware.any.js new file mode 100644 index 000000000..5c6689b96 --- /dev/null +++ b/react/features/video-layout/middleware.any.js @@ -0,0 +1,39 @@ +import { + PIN_PARTICIPANT, + getPinnedParticipant, + pinParticipant +} from '../base/participants'; +import { MiddlewareRegistry } from '../base/redux'; + +import { SET_TILE_VIEW } from './actionTypes'; +import { setTileView } from './actions'; + +/** + * Middleware which intercepts actions and updates tile view related state. + * + * @param {Store} store - The redux store. + * @returns {Function} + */ +MiddlewareRegistry.register(store => next => action => { + switch (action.type) { + case PIN_PARTICIPANT: { + const isPinning = Boolean(action.participant.id); + const { tileViewEnabled } = store.getState()['features/video-layout']; + + if (isPinning && tileViewEnabled) { + store.dispatch(setTileView(false)); + } + + break; + } + + case SET_TILE_VIEW: + if (getPinnedParticipant(store.getState()) && action.enabled) { + store.dispatch(pinParticipant(null)); + } + + break; + } + + return next(action); +}); diff --git a/react/features/video-layout/middleware.native.js b/react/features/video-layout/middleware.native.js index e69de29bb..fefd329e8 100644 --- a/react/features/video-layout/middleware.native.js +++ b/react/features/video-layout/middleware.native.js @@ -0,0 +1 @@ +import './middleware.any'; diff --git a/react/features/video-layout/middleware.web.js b/react/features/video-layout/middleware.web.js index a6002fab3..3cec16f59 100644 --- a/react/features/video-layout/middleware.web.js +++ b/react/features/video-layout/middleware.web.js @@ -17,6 +17,7 @@ import { TRACK_ADDED } from '../base/tracks'; import { SET_FILMSTRIP_VISIBLE } from '../filmstrip'; import { SET_TILE_VIEW } from './actionTypes'; +import './middleware.any'; declare var APP: Object;