From edf7fcd3d4ec99caac05edf851077f199ca989aa Mon Sep 17 00:00:00 2001 From: Alex Hinson Date: Mon, 27 Apr 2020 17:00:50 -0700 Subject: [PATCH 1/4] update Hub listener for sign out --- .../src/Auth/Authenticator.js | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/packages/aws-amplify-react-native/src/Auth/Authenticator.js b/packages/aws-amplify-react-native/src/Auth/Authenticator.js index b8dc66eb454..9769704d45a 100644 --- a/packages/aws-amplify-react-native/src/Auth/Authenticator.js +++ b/packages/aws-amplify-react-native/src/Auth/Authenticator.js @@ -76,23 +76,51 @@ export default class Authenticator extends React.Component { } onHubCapsule(capsule) { - const { channel, payload, source } = capsule; - if (channel === 'auth') { - this.checkUser(); + const { + payload: { event }, + data, + } = capsule; + switch (event) { + case 'cognitoHostedUI': + return this.handleStateChange('signedIn', data); + + case 'cognitoHostedUI_failure': + case 'parsingUrl_failure': + case 'signOut': + case 'customGreetingSignOut': + return this.handleStateChange('signIn', null); } } handleStateChange(state, data) { - logger.debug('authenticator state change ' + state); - if (!this._isMounted) return; - if (state === this.state.authState) { - return; - } + if (state === undefined) return logger.info('state cannot be undefined'); + logger.info( + 'Inside handleStateChange Method current authState:', + this.state.authState + ); + let nextAuthState; if (state === 'signedOut') { - state = 'signIn'; + nextAuthState = this._initialAuthState; + } else { + nextAuthState = state; + } + + let nextAuthData = this.state.authData; + if (data !== undefined) { + nextAuthData = data; } - this.setState({ authState: state, authData: data, error: null }); + + if (this._isMounted) { + this.setState({ + authState: nextAuthState, + authData: nextAuthData, + error: null, + }); + logger.log('Auth Data was set:', nextAuthData); + logger.info(`authState has been updated to ${nextAuthState}`); + } + if (this.props.onStateChange) { this.props.onStateChange(state, data); } From ea588fe0a9256c9e50e1a14fca9dfd5451b4c8be Mon Sep 17 00:00:00 2001 From: Alex Hinson Date: Tue, 28 Apr 2020 10:17:54 -0700 Subject: [PATCH 2/4] Update packages/aws-amplify-react-native/src/Auth/Authenticator.js Co-Authored-By: Eric Clemmons --- packages/aws-amplify-react-native/src/Auth/Authenticator.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/aws-amplify-react-native/src/Auth/Authenticator.js b/packages/aws-amplify-react-native/src/Auth/Authenticator.js index e3ea2ce0dba..797c17e3c92 100644 --- a/packages/aws-amplify-react-native/src/Auth/Authenticator.js +++ b/packages/aws-amplify-react-native/src/Auth/Authenticator.js @@ -81,8 +81,7 @@ export default class Authenticator extends React.Component { onHubCapsule(capsule) { const { - payload: { event }, - data, + payload: { event, data } } = capsule; switch (event) { case 'cognitoHostedUI': From d43764167b1492104d1d2b9423a8d3c0451bb1fb Mon Sep 17 00:00:00 2001 From: Alex Hinson Date: Tue, 28 Apr 2020 16:15:22 -0700 Subject: [PATCH 3/4] Apply suggestions from code review Co-Authored-By: Ashika <35131273+ashika01@users.noreply.github.com> --- packages/aws-amplify-react-native/src/Auth/Authenticator.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aws-amplify-react-native/src/Auth/Authenticator.js b/packages/aws-amplify-react-native/src/Auth/Authenticator.js index 797c17e3c92..390112d46f5 100644 --- a/packages/aws-amplify-react-native/src/Auth/Authenticator.js +++ b/packages/aws-amplify-react-native/src/Auth/Authenticator.js @@ -96,10 +96,10 @@ export default class Authenticator extends React.Component { } handleStateChange(state, data) { - if (state === undefined) return logger.info('state cannot be undefined'); + if (state === undefined) return logger.info('Auth state cannot be undefined'); logger.info( - 'Inside handleStateChange Method current authState:', + 'Inside handleStateChange method current authState:', this.state.authState ); let nextAuthState; From f0902587dedec086b5d7ad6275cd4861b4c49928 Mon Sep 17 00:00:00 2001 From: Alex Hinson Date: Thu, 30 Apr 2020 09:09:34 -0700 Subject: [PATCH 4/4] refactor handleStateChange variables --- .../src/Auth/Authenticator.js | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/aws-amplify-react-native/src/Auth/Authenticator.js b/packages/aws-amplify-react-native/src/Auth/Authenticator.js index 73859452cc0..4d11904fd18 100644 --- a/packages/aws-amplify-react-native/src/Auth/Authenticator.js +++ b/packages/aws-amplify-react-native/src/Auth/Authenticator.js @@ -81,7 +81,7 @@ export default class Authenticator extends React.Component { onHubCapsule(capsule) { const { - payload: { event, data } + payload: { event, data }, } = capsule; switch (event) { case 'cognitoHostedUI': @@ -96,23 +96,17 @@ export default class Authenticator extends React.Component { } handleStateChange(state, data) { - if (state === undefined) return logger.info('Auth state cannot be undefined'); + if (state === undefined) + return logger.info('Auth state cannot be undefined'); logger.info( 'Inside handleStateChange method current authState:', this.state.authState ); - let nextAuthState; - if (state === 'signedOut') { - nextAuthState = this._initialAuthState; - } else { - nextAuthState = state; - } - let nextAuthData = this.state.authData; - if (data !== undefined) { - nextAuthData = data; - } + const nextAuthState = + state === 'signedOut' ? this._initialAuthState : state; + const nextAuthData = data !== undefined ? data : this.state.authData; if (this._isMounted) { this.setState({