From 6229c1ac22da9f75796fef8f069d08978ef20220 Mon Sep 17 00:00:00 2001 From: Ben Adida <ben@adida.net> Date: Wed, 16 Nov 2011 15:58:48 -0800 Subject: [PATCH] unregister the dialog callbacks from relay frame so that on second click we wait for the new callbacks to be registered, fixes #589 --- .../dialog/controllers/dialog_controller.js | 1 + resources/static/dialog/resources/channel.js | 18 +++++++++++++++++- resources/static/relay/relay.js | 7 ++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/resources/static/dialog/controllers/dialog_controller.js b/resources/static/dialog/controllers/dialog_controller.js index e2c7f3b97..fce5176da 100644 --- a/resources/static/dialog/controllers/dialog_controller.js +++ b/resources/static/dialog/controllers/dialog_controller.js @@ -124,6 +124,7 @@ bid.Storage.setStagedOnBehalfOf(""); self.doCancel(); } + window.teardownChannel(); }); }, diff --git a/resources/static/dialog/resources/channel.js b/resources/static/dialog/resources/channel.js index d98f44680..5e51e0e21 100644 --- a/resources/static/dialog/resources/channel.js +++ b/resources/static/dialog/resources/channel.js @@ -110,6 +110,16 @@ setupIFrameChannel(controller); } + function close() { + var frameWindow = getRelayWindow(); + + if (frameWindow) { + frameWindow.BrowserID.Relay.unregisterClient(); + } + else { + throw "relay frame not found"; + } + } function init(options) { onCompleteCallback = undefined; @@ -139,7 +149,12 @@ * @param {object} options - contains: * * options.getVerifiedEmail {function} - function to /get */ - open: open + open: open, + + /** + * Close the channel + */ + close: close }; } @@ -148,4 +163,5 @@ * window.setupChannel; */ window.setupChannel = open; + window.teardownChannel = close; }()); diff --git a/resources/static/relay/relay.js b/resources/static/relay/relay.js index 2c434508d..73dd22d89 100644 --- a/resources/static/relay/relay.js +++ b/resources/static/relay/relay.js @@ -124,6 +124,10 @@ forwardCall(); } + function unregisterClient() { + registeredMethods = null; + } + function getVerboseMessage(code) { var msgs = { "canceled": "user canceled selection", @@ -157,7 +161,8 @@ * Register a client to use the relay * @method registerClient */ - registerClient: registerClient + registerClient: registerClient, + unregisterClient: unregisterClient }; }()); -- GitLab