diff --git a/src/components/registration/registration.jsx b/src/components/registration/registration.jsx
index 51b73ff61..b9b309a3c 100644
--- a/src/components/registration/registration.jsx
+++ b/src/components/registration/registration.jsx
@@ -13,13 +13,27 @@ var Registration = React.createClass({
},
onMessage: function (e) {
if (e.origin != window.location.origin) return;
+ if (e.source != this.refs.registrationIframe.contentWindow) return;
if (e.data == 'registration-done') this.props.onRegistrationDone();
+ if (e.data == 'registration-relaunch') {
+ this.refs.registrationIframe.contentWindow.location.reload();
+ }
+ },
+ toggleMessageListener: function (present) {
+ if (present) {
+ window.addEventListener('message', this.onMessage);
+ } else {
+ window.removeEventListener('message', this.onMessage);
+ }
},
componentDidMount: function () {
- window.addEventListener('message', this.onMessage);
+ if (this.props.isOpen) this.toggleMessageListener(true);
+ },
+ componentDidUpdate: function (prevProps) {
+ this.toggleMessageListener(this.props.isOpen && !prevProps.isOpen);
},
componentWillUnmount: function () {
- window.removeEventListener('message', this.onMessage);
+ this.toggleMessageListener(false);
},
render: function () {
var frameSettings = {
@@ -32,7 +46,7 @@ var Registration = React.createClass({
onRequestClose={this.props.onRequestClose}
className="registration"
frameSettings={frameSettings}>
-
+
);
}