[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:
Saúl Ibarra Corretgé 2017-08-25 17:21:01 +02:00 committed by Lyubo Marinov
parent 1d8ee9d32f
commit 284e4e543e
9 changed files with 78 additions and 3 deletions

View File

@ -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.

View File

@ -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) {
}
}

View File

@ -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);
}

View File

@ -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.

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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;