From 6afb300d86df88768f88597b894a73737c8cd06c Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Thu, 1 Feb 2018 17:55:53 +0100 Subject: [PATCH] Unlisten --- .../client/components/SignInContainer.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/talk-plugin-auth/client/components/SignInContainer.js b/plugins/talk-plugin-auth/client/components/SignInContainer.js index 4dc072feb..6f99f9ce6 100644 --- a/plugins/talk-plugin-auth/client/components/SignInContainer.js +++ b/plugins/talk-plugin-auth/client/components/SignInContainer.js @@ -38,8 +38,7 @@ class SignInContainer extends React.Component { } componentDidMount() { - window.addEventListener('storage', this.handleAuth); - + this.listenToStorageChanges(); const { formData } = this.state; const errors = Object.keys(formData).reduce((map, prop) => { map[prop] = t('sign_in.required_field'); @@ -49,6 +48,14 @@ class SignInContainer extends React.Component { } componentWillUnmount() { + this.unlisten(); + } + + listenToStorageChanges() { + window.addEventListener('storage', this.handleAuth); + } + + unlisten() { window.removeEventListener('storage', this.handleAuth); } @@ -60,6 +67,7 @@ class SignInContainer extends React.Component { if (e.key === 'auth') { const { err, data } = JSON.parse(e.newValue); authCallback(err, data); + this.unlisten(); localStorage.removeItem('auth'); } };