// @flow import { MiddlewareRegistry } from '../base/redux'; import { playSound } from '../base/sounds'; import { INCOMING_MSG_SOUND_ID } from '../chat/constants'; import { RECEIVE_POLL } from './actionTypes'; MiddlewareRegistry.register(({ dispatch, getState }) => next => action => { const result = next(action); switch (action.type) { // Middleware triggered when a poll is received case RECEIVE_POLL: { const state = getState(); const isChatOpen: boolean = state['features/chat'].isOpen; const isPollsTabFocused: boolean = state['features/chat'].isPollsTabFocused; // Finally, we notify user they received a new poll if their pane is not opened if (action.notify && (!isChatOpen || !isPollsTabFocused)) { dispatch(playSound(INCOMING_MSG_SOUND_ID)); } break; } } return result; });