From c8fe29ec3b0f009f001c1683fa03a3dd514b3132 Mon Sep 17 00:00:00 2001 From: Kha Truong <64438356+khatruong2009@users.noreply.github.com> Date: Thu, 19 Oct 2023 16:49:52 -0700 Subject: [PATCH 1/3] fix: endpoint_client configure bug fix --- .../analytics_client/endpoint_client/endpoint_client.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart index 8f32f79946..454d184109 100644 --- a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart +++ b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart @@ -149,7 +149,7 @@ class EndpointClient { /// Send local Endpoint instance to AWS Pinpoint. Future updateEndpoint() async { - try { + Future update() async { await _pinpointClient .updateEndpoint( UpdateEndpointRequest( @@ -159,6 +159,12 @@ class EndpointClient { ), ) .result; + } + + try { + await update(); + } on SessionExpiredException { + await update(); } on Exception catch (e) { throw fromPinpointException(e); } From 9bb0b215ed3812f60c23e78a344d32e3682da1c3 Mon Sep 17 00:00:00 2001 From: Jordan Nelson Date: Fri, 20 Oct 2023 09:25:22 -0400 Subject: [PATCH 2/3] chore: throw correct exception for disabled guest access --- .../endpoint_client/endpoint_client.dart | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart index 454d184109..5061adc093 100644 --- a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart +++ b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart @@ -150,23 +150,31 @@ class EndpointClient { /// Send local Endpoint instance to AWS Pinpoint. Future updateEndpoint() async { Future update() async { - await _pinpointClient - .updateEndpoint( - UpdateEndpointRequest( - applicationId: _pinpointAppId, - endpointId: _fixedEndpointId, - endpointRequest: _endpointToRequest(getPublicEndpoint()), - ), - ) - .result; + try { + await _pinpointClient + .updateEndpoint( + UpdateEndpointRequest( + applicationId: _pinpointAppId, + endpointId: _fixedEndpointId, + endpointRequest: _endpointToRequest(getPublicEndpoint()), + ), + ) + .result; + } on SessionExpiredException { + // rethrow SessionExpiredException so that it can be retried. + rethrow; + } on Exception catch (e) { + throw fromPinpointException(e); + } } try { await update(); } on SessionExpiredException { + // When SessionExpiredException is thrown, the local credential store + // is cleared. At this point the operation should be retired with guest + // credentials. await update(); - } on Exception catch (e) { - throw fromPinpointException(e); } } From 16ce7ace54f1243be34bf6a05757cdf3994826b6 Mon Sep 17 00:00:00 2001 From: Jordan Nelson Date: Fri, 20 Oct 2023 10:44:36 -0400 Subject: [PATCH 3/3] fix: only throw session expired once --- .../endpoint_client/endpoint_client.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart index 5061adc093..b2201bfda1 100644 --- a/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart +++ b/packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/endpoint_client/endpoint_client.dart @@ -149,7 +149,7 @@ class EndpointClient { /// Send local Endpoint instance to AWS Pinpoint. Future updateEndpoint() async { - Future update() async { + Future update({bool throwSessionExpired = false}) async { try { await _pinpointClient .updateEndpoint( @@ -160,16 +160,17 @@ class EndpointClient { ), ) .result; - } on SessionExpiredException { + } on SessionExpiredException catch (e) { // rethrow SessionExpiredException so that it can be retried. - rethrow; + if (throwSessionExpired) rethrow; + throw fromPinpointException(e); } on Exception catch (e) { throw fromPinpointException(e); } } try { - await update(); + await update(throwSessionExpired: true); } on SessionExpiredException { // When SessionExpiredException is thrown, the local credential store // is cleared. At this point the operation should be retired with guest