From ad81622faabaa8233fd7d707be966d8036876460 Mon Sep 17 00:00:00 2001 From: Marco Trivisonno Date: Sun, 21 May 2023 11:54:44 +0200 Subject: [PATCH] fix: in web implementation session token is never used during the place autocomplete --- flutter_google_places_sdk_web/CHANGELOG.md | 4 ++++ .../lib/flutter_google_places_sdk_web.dart | 15 +++++++++++++-- flutter_google_places_sdk_web/pubspec.yaml | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/flutter_google_places_sdk_web/CHANGELOG.md b/flutter_google_places_sdk_web/CHANGELOG.md index 224fc90..b220af2 100644 --- a/flutter_google_places_sdk_web/CHANGELOG.md +++ b/flutter_google_places_sdk_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.3+5 + +* Fix: session token is never used during the place autocomplete + ## 0.1.3+4 * Use formatted adrress instead of adr_address diff --git a/flutter_google_places_sdk_web/lib/flutter_google_places_sdk_web.dart b/flutter_google_places_sdk_web/lib/flutter_google_places_sdk_web.dart index 6a3165a..cd6596d 100644 --- a/flutter_google_places_sdk_web/lib/flutter_google_places_sdk_web.dart +++ b/flutter_google_places_sdk_web/lib/flutter_google_places_sdk_web.dart @@ -100,6 +100,14 @@ class FlutterGooglePlacesSdkWebPlugin extends FlutterGooglePlacesSdkPlatform { return _completer?.isCompleted == true; } + AutocompleteSessionToken _getSessionToken({required bool force}) { + final localToken = _lastSessionToken; + if (force || localToken == null) { + return AutocompleteSessionToken(); + } + return localToken; + } + @override Future findAutocompletePredictions( String query, { @@ -116,13 +124,15 @@ class FlutterGooglePlacesSdkWebPlugin extends FlutterGooglePlacesSdkPlatform { // https://issuetracker.google.com/issues/36219203 log("locationRestriction is not supported: https://issuetracker.google.com/issues/36219203"); } + final sessionToken = _getSessionToken(force: newSessionToken == true); final prom = _svcAutoComplete!.getPlacePredictions(AutocompletionRequest() ..input = query ..origin = origin == null ? null : core.LatLng(origin.lat, origin.lng) ..types = typeFilterStr == null ? null : [typeFilterStr] ..componentRestrictions = (ComponentRestrictions()..country = countries) ..bounds = _boundsToWeb(locationBias) - ..language = _language); + ..language = _language + ..sessionToken = sessionToken); final resp = await prom; final predictions = resp.predictions @@ -169,10 +179,11 @@ class FlutterGooglePlacesSdkWebPlugin extends FlutterGooglePlacesSdkPlatform { List? fields, bool? newSessionToken, }) async { + final sessionToken = _getSessionToken(force: newSessionToken == true); final prom = _getDetails(PlaceDetailsRequest() ..placeId = placeId ..fields = fields?.map(this._mapField).toList(growable: false) - ..sessionToken = _lastSessionToken + ..sessionToken = sessionToken ..language = _language); final resp = await prom; diff --git a/flutter_google_places_sdk_web/pubspec.yaml b/flutter_google_places_sdk_web/pubspec.yaml index 703cc1a..78f29ec 100644 --- a/flutter_google_places_sdk_web/pubspec.yaml +++ b/flutter_google_places_sdk_web/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_google_places_sdk_web description: The web implementation of Flutter plugin for google places sdk -version: 0.1.3+4 +version: 0.1.3+5 homepage: https://github.com/matanshukry/flutter_google_places_sdk/tree/master/flutter_google_places_sdk_web environment: