28 lines
902 B
JavaScript
28 lines
902 B
JavaScript
|
// @flow
|
||
|
|
||
|
import { StateListenerRegistry } from '../base/redux';
|
||
|
|
||
|
import { setFatalError } from './actions';
|
||
|
|
||
|
declare var APP: Object;
|
||
|
|
||
|
/**
|
||
|
* State listener which emits the {@code fatalErrorOccurred} action which works
|
||
|
* as a catch all for critical errors which have not been claimed by any other
|
||
|
* feature for error recovery (the recoverable flag is not set).
|
||
|
*/
|
||
|
StateListenerRegistry.register(
|
||
|
/* selector */ state => {
|
||
|
const { error: conferenceError } = state['features/base/conference'];
|
||
|
const { error: configError } = state['features/base/config'];
|
||
|
const { error: connectionError } = state['features/base/connection'];
|
||
|
|
||
|
return configError || connectionError || conferenceError;
|
||
|
},
|
||
|
/* listener */ (error, { dispatch }) => {
|
||
|
error
|
||
|
&& typeof error.recoverable === 'undefined'
|
||
|
&& dispatch(setFatalError(error));
|
||
|
}
|
||
|
);
|