+
+ if(nextProps.match.params.externalUrl !== undefined &&
+ nextProps.match.params.externalUrl !== this.props.match.params.externalUrl &&
+ this.isValidExternalURL(nextProps.match.params.externalUrl)) {
+ this.props.onExternalUrlRequest(nextProps.match.params.externalUrl);
+ }
+ /* if the externalURL is not valid, we do not add any message as other proper
+ views will get that messages since the route will be this parameter.*/
+
+ if(this.props.externalRequestFound !== nextProps.externalRequestFound &&
+ nextProps.externalRequestFound !== undefined && nextProps.externalRequestFound.suggestion !== undefined) {
+ changeUrlAddress(nextProps.externalRequestFound.suggestion, nextProps.history);
+ }
+ }
+
+ receiveMessage(event) {
+ function isJson(str) {
+ try {
+ JSON.parse(str);
+ } catch (e) {
+ return false;
+ }
+ return true;
+ }
+ let messageData = event.data.message;
+ if(isJson(messageData)) {
+ this.props.onExternalMessageRecieved(JSON.parse(messageData));
+ }
+ }
+ componentDidMount() {
+ window.addEventListener('message', this.receiveMessage, false);
+ }
+ componentWillUnmount() {
+ window.removeEventListener('message', this.receiveMessage);