From 3ca2f1195f84a4255f14d3f445bdf20c16e16090 Mon Sep 17 00:00:00 2001 From: Murali Krishna Regandla Date: Thu, 21 Mar 2019 17:53:23 +0530 Subject: [PATCH 1/2] Setting installationId in _Session object during sign-up --- lib/src/base/parse_constants.dart | 1 + lib/src/objects/parse_user.dart | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/src/base/parse_constants.dart b/lib/src/base/parse_constants.dart index cc3021fc2..554d633c9 100644 --- a/lib/src/base/parse_constants.dart +++ b/lib/src/base/parse_constants.dart @@ -44,6 +44,7 @@ const String keyHeaderContentType = 'Content-Type'; const String keyHeaderContentTypeJson = 'application/json'; const String keyHeaderMasterKey = 'X-Parse-Master-Key'; const String keyHeaderClientKey = 'X-Parse-Client-Key'; +const String keyHeaderInstallationId = 'X-Parse-Installation-Id'; // URL params const String keyParamSessionToken = 'sessionToken'; diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index f2f382343..d79b57cc7 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -126,9 +126,11 @@ class ParseUser extends ParseObject implements ParseCloneable { bodyData[keyVarPassword] = password; bodyData[keyVarUsername] = username; final Uri url = getSanitisedUri(_client, '$path'); + final String installationId = await _getInstallationId(); final Response response = await _client.post(url, headers: { keyHeaderRevocableSession: '1', + keyInstallationId: installationId, }, body: json.encode(bodyData)); @@ -174,10 +176,12 @@ class ParseUser extends ParseObject implements ParseCloneable { try { final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); final Uuid uuid = Uuid(); + final String installationId = await _getInstallationId(); final Response response = await _client.post(url, headers: { keyHeaderRevocableSession: '1', + keyInstallationId: installationId, }, body: jsonEncode({ 'authData': { @@ -203,9 +207,11 @@ class ParseUser extends ParseObject implements ParseCloneable { Future _loginWith(String provider, Object authData) async { try { final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); + final String installationId = await _getInstallationId(); final Response response = await _client.post(url, headers: { keyHeaderRevocableSession: '1', + keyInstallationId: installationId, }, body: jsonEncode({ 'authData': {provider: authData} @@ -218,6 +224,12 @@ class ParseUser extends ParseObject implements ParseCloneable { } } + static Future _getInstallationId() async { + final ParseInstallation parseInstallation = + await ParseInstallation.currentInstallation(); + return parseInstallation.installationId; + } + /// Sends a request to delete the sessions token from the /// server. Will also delete the local user data unless /// deleteLocalUserData is false. From b4bef0bd821ecd27e57cd480a2a54d51178b4b20 Mon Sep 17 00:00:00 2001 From: Murali Krishna Regandla Date: Fri, 22 Mar 2019 10:05:08 +0530 Subject: [PATCH 2/2] Setting installationId in _Session object during sign-up - Added null check --- lib/src/objects/parse_user.dart | 37 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index d79b57cc7..e1b7c6d1b 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -126,13 +126,15 @@ class ParseUser extends ParseObject implements ParseCloneable { bodyData[keyVarPassword] = password; bodyData[keyVarUsername] = username; final Uri url = getSanitisedUri(_client, '$path'); + final Map headers = { + keyHeaderRevocableSession: '1', + }; final String installationId = await _getInstallationId(); + if (installationId != null) { + headers[keyHeaderInstallationId] = installationId; + } final Response response = await _client.post(url, - headers: { - keyHeaderRevocableSession: '1', - keyInstallationId: installationId, - }, - body: json.encode(bodyData)); + headers: headers, body: json.encode(bodyData)); return _handleResponse( this, response, ParseApiRQ.signUp, _debug, className); @@ -176,13 +178,15 @@ class ParseUser extends ParseObject implements ParseCloneable { try { final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); final Uuid uuid = Uuid(); + final Map headers = { + keyHeaderRevocableSession: '1', + }; final String installationId = await _getInstallationId(); - + if (installationId != null) { + headers[keyHeaderInstallationId] = installationId; + } final Response response = await _client.post(url, - headers: { - keyHeaderRevocableSession: '1', - keyInstallationId: installationId, - }, + headers: headers, body: jsonEncode({ 'authData': { 'anonymous': {'id': uuid.v4()} @@ -207,12 +211,15 @@ class ParseUser extends ParseObject implements ParseCloneable { Future _loginWith(String provider, Object authData) async { try { final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); + final Map headers = { + keyHeaderRevocableSession: '1', + }; final String installationId = await _getInstallationId(); + if (installationId != null) { + headers[keyHeaderInstallationId] = installationId; + } final Response response = await _client.post(url, - headers: { - keyHeaderRevocableSession: '1', - keyInstallationId: installationId, - }, + headers: headers, body: jsonEncode({ 'authData': {provider: authData} })); @@ -227,7 +234,7 @@ class ParseUser extends ParseObject implements ParseCloneable { static Future _getInstallationId() async { final ParseInstallation parseInstallation = await ParseInstallation.currentInstallation(); - return parseInstallation.installationId; + return parseInstallation?.installationId; } /// Sends a request to delete the sessions token from the