Clean authData of null values on _User update

Adds a step to the RestWrite#execute chain: it cleans the response
authData object of null values.

For example, this:

{"authData": {"anonymous": null}, "updatedAt", ...}

will be transformed to this:

{"updatedAt", ...}

And this:

{"authData": {"anonymous": null, "twitter": ...}, "updatedAt", ...}

will be transformed to this:

{"authData": {"twitter": ...}, "updatedAt", ...}

Fixing this issue will fix anonymous user upgrades from the Android SDK.
This commit is contained in:
yuzeh
2016-03-25 16:11:27 -07:00
parent f259a3b17e
commit 1b8e613dfb
2 changed files with 77 additions and 0 deletions

View File

@@ -83,6 +83,8 @@ RestWrite.prototype.execute = function() {
return this.handleFollowup();
}).then(() => {
return this.runAfterTrigger();
}).then(() => {
return this.cleanUserAuthData();
}).then(() => {
return this.response;
});
@@ -824,5 +826,21 @@ RestWrite.prototype.sanitizedData = function() {
return Parse._decode(undefined, data);
}
RestWrite.prototype.cleanUserAuthData = function() {
if (this.response && this.response.response && this.className === '_User') {
let user = this.response.response;
if (user.authData) {
Object.keys(user.authData).forEach((provider) => {
if (user.authData[provider] === null) {
delete user.authData[provider];
}
});
if (Object.keys(user.authData).length == 0) {
delete user.authData;
}
}
}
};
export default RestWrite;
module.exports = RestWrite;