[RN] Detect errors when loading the configuration
The error is stored in the redux store in base/config so other components can consult it. It is also broadcasted as a new event in the external API for the SDK.
This commit is contained in:
parent
1d8ee9d32f
commit
284e4e543e
|
@ -241,3 +241,9 @@ The `data` HashMap contains a "url" key with the conference URL.
|
|||
Called before a conference is left.
|
||||
|
||||
The `data` HashMap contains a "url" key with the conference URL.
|
||||
|
||||
#### onLoadConfigError
|
||||
|
||||
Called when loading the main configuration fails.
|
||||
|
||||
The `data` HashMap contains a "error" key with the error.
|
||||
|
|
|
@ -57,4 +57,11 @@ public abstract class JitsiMeetViewAdapter implements JitsiMeetViewListener {
|
|||
@Override
|
||||
public void onConferenceWillLeave(Map<String, Object> data) {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void onLoadConfigError(Map<String, Object> data) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,4 +58,11 @@ public interface JitsiMeetViewListener {
|
|||
* @param data - Map with a "url" key with the conference URL.
|
||||
*/
|
||||
void onConferenceWillLeave(Map<String, Object> data);
|
||||
|
||||
/**
|
||||
* Called when loading the main configuration fails.
|
||||
*
|
||||
* @param data - Map with a "error" key with the error.
|
||||
*/
|
||||
void onLoadConfigError(Map<String, Object> data);
|
||||
}
|
||||
|
|
|
@ -150,3 +150,9 @@ The `data` dictionary contains a "url" key with the conference URL.
|
|||
Called before a conference is left.
|
||||
|
||||
The `data` dictionary contains a "url" key with the conference URL.
|
||||
|
||||
#### loadConfigError
|
||||
|
||||
Called when loading the main configuration fails.
|
||||
|
||||
The `data` dictionary contains a "error" key with the error.
|
||||
|
|
|
@ -59,4 +59,11 @@
|
|||
*/
|
||||
- (void) conferenceWillLeave:(NSDictionary *)data;
|
||||
|
||||
/**
|
||||
* Called when loading the main configuration file fails.
|
||||
*
|
||||
* The {@code data} dictionary contains a {@code error} key with the error.
|
||||
*/
|
||||
- (void) loadConfigError:(NSDictionary *)data;
|
||||
|
||||
@end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { setRoom } from '../base/conference';
|
||||
import { setLocationURL } from '../base/connection';
|
||||
import { setConfig } from '../base/config';
|
||||
import { loadConfigError, setConfig } from '../base/config';
|
||||
import { loadConfig } from '../base/lib-jitsi-meet';
|
||||
import { parseURIString } from '../base/util';
|
||||
|
||||
|
@ -66,8 +66,12 @@ function _appNavigateToMandatoryLocation(
|
|||
// certificate-related error. In which case the connection will
|
||||
// fail later in Strophe anyway even if we use the default
|
||||
// config here.
|
||||
dispatch(loadConfigError(error));
|
||||
|
||||
// We cannot go to the requested room if we weren't able to load
|
||||
// the configuration. Go back to the entryway.
|
||||
newLocation.room = undefined;
|
||||
|
||||
// The function loadConfig will log the err.
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
/**
|
||||
* The redux action which signals the configuration couldn't be loaded due to an
|
||||
* error.
|
||||
*
|
||||
* {
|
||||
* type: LOAD_CONFIG_ERROR,
|
||||
* error: Error
|
||||
* }
|
||||
*/
|
||||
export const LOAD_CONFIG_ERROR = Symbol('LOAD_CONFIG_ERROR');
|
||||
|
||||
/**
|
||||
* The redux action which sets the configuration represented by the feature
|
||||
* base/config. The configuration is defined and consumed by the library
|
||||
|
|
|
@ -1,6 +1,22 @@
|
|||
/* @flow */
|
||||
|
||||
import { SET_CONFIG } from './actionTypes';
|
||||
import { LOAD_CONFIG_ERROR, SET_CONFIG } from './actionTypes';
|
||||
|
||||
/**
|
||||
* Signals an error when loading the configuration.
|
||||
*
|
||||
* @param {Error} error - The error which caused the config to not be loaded.
|
||||
* @returns {{
|
||||
* type: LOAD_CONFIG_ERROR,
|
||||
* error: Error
|
||||
* }}
|
||||
*/
|
||||
export function loadConfigError(error: Error) {
|
||||
return {
|
||||
type: LOAD_CONFIG_ERROR,
|
||||
error
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the configuration represented by the feature base/config. The
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
CONFERENCE_WILL_LEAVE,
|
||||
JITSI_CONFERENCE_URL_KEY
|
||||
} from '../../base/conference';
|
||||
import { LOAD_CONFIG_ERROR } from '../../base/config';
|
||||
import { MiddlewareRegistry } from '../../base/redux';
|
||||
import { toURLString } from '../../base/util';
|
||||
|
||||
|
@ -45,6 +46,16 @@ MiddlewareRegistry.register(store => next => action => {
|
|||
_sendEvent(store, name, data);
|
||||
break;
|
||||
}
|
||||
|
||||
case LOAD_CONFIG_ERROR: {
|
||||
const { type, error } = action;
|
||||
|
||||
_sendEvent(
|
||||
store,
|
||||
_getSymbolDescription(type),
|
||||
{ error: String(error) });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
Loading…
Reference in New Issue