Lets increment/set badges on all _Installations (#3970)

* Lets increment/set badges on all _Installations

* Makes sure PG update where query is properly formed with empty query
This commit is contained in:
Florent Vilmart
2017-07-03 10:16:04 -04:00
committed by GitHub
parent 5931aa8851
commit ad52ed64af
4 changed files with 9 additions and 19 deletions

View File

@@ -172,12 +172,8 @@ describe('PushController', () => {
send: function(body, installations) {
var badge = body.data.badge;
installations.forEach((installation) => {
if (installation.deviceType == "ios") {
expect(installation.badge).toEqual(badge);
expect(installation.originalBadge + 1).toEqual(installation.badge);
} else {
expect(installation.badge).toBeUndefined();
}
expect(installation.badge).toEqual(badge);
expect(installation.originalBadge + 1).toEqual(installation.badge);
})
return successfulTransmissions(body, installations);
},
@@ -203,7 +199,9 @@ describe('PushController', () => {
while(installations.length != 15) {
const installation = new Parse.Object("_Installation");
installation.set("installationId", "installation_" + installations.length);
installation.set("deviceToken","device_token_" + installations.length)
installation.set("deviceToken","device_token_" + installations.length);
installation.set("badge", installations.length);
installation.set("originalBadge", installations.length);
installation.set("deviceType", "android");
installations.push(installation);
}
@@ -238,12 +236,7 @@ describe('PushController', () => {
expect(results.length).toBe(15);
for (var i = 0; i < 15; i++) {
const installation = results[i];
if (installation.get('deviceType') == 'ios') {
expect(installation.get('badge')).toBe(parseInt(installation.get('originalBadge')) + 1);
} else {
expect(installation.get('badge')).toBe(undefined);
expect(installation.get('originalBadge')).toBe(undefined);
}
expect(installation.get('badge')).toBe(parseInt(installation.get('originalBadge')) + 1);
}
done()
}).catch((err) => {

View File

@@ -1091,7 +1091,8 @@ export class PostgresStorageAdapter {
const where = buildWhereClause({ schema, index, query })
values.push(...where.values);
const qs = `UPDATE $1:name SET ${updatePatterns.join(',')} WHERE ${where.pattern} RETURNING *`;
const whereClause = where.pattern.length > 0 ? `WHERE ${where.pattern}` : '';
const qs = `UPDATE $1:name SET ${updatePatterns.join(',')} ${whereClause} RETURNING *`;
debug('update: ', qs, values);
return this._client.any(qs, values);
}

View File

@@ -36,7 +36,6 @@ export class PushController {
const updateWhere = deepcopy(where);
badgeUpdate = () => {
updateWhere.deviceType = 'ios';
// Build a real RestQuery so we can use it in RestWrite
const restQuery = new RestQuery(config, master(config), '_Installation', updateWhere);
return restQuery.buildRestWhere().then(() => {

View File

@@ -14,10 +14,7 @@ const UNSUPPORTED_BADGE_KEY = "unsupported";
function groupByBadge(installations) {
return installations.reduce((map, installation) => {
let badge = installation.badge + '';
if (installation.deviceType != "ios") {
badge = UNSUPPORTED_BADGE_KEY;
}
const badge = installation.badge + '';
map[badge] = map[badge] || [];
map[badge].push(installation);
return map;