Skip to content

Commit 74b847f

Browse files
committed
Merge pull request #1204 from ParsePlatform/flovilmart.flatteningPushAdapterResults
Improve flattening of results from pushAdapter
2 parents cd05e3b + aeda714 commit 74b847f

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
],
1919
"license": "BSD-3-Clause",
2020
"dependencies": {
21-
"apn": "^1.7.5",
2221
"babel-polyfill": "^6.5.0",
2322
"babel-runtime": "^6.5.0",
2423
"bcrypt-nodejs": "0.0.3",
@@ -32,7 +31,6 @@
3231
"mime": "^1.3.4",
3332
"mongodb": "~2.1.0",
3433
"multer": "^1.1.0",
35-
"node-gcm": "^0.14.0",
3634
"parse": "^1.8.0",
3735
"parse-server-fs-adapter": "^1.0.0",
3836
"parse-server-gcs-adapter": "^1.0.0",

spec/PushController.spec.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var PushController = require('../src/Controllers/PushController').PushController;
3-
3+
var pushStatusHandler = require('../src/pushStatusHandler');
44
var Config = require('../src/Config');
55

66
const successfulTransmissions = function(body, installations) {
@@ -357,4 +357,8 @@ describe('PushController', () => {
357357
});
358358
});
359359

360+
it('should flatten', () => {
361+
var res = pushStatusHandler.flatten([1, [2], [[3, 4], 5], [[[6]]]])
362+
expect(res).toEqual([1,2,3,4,5,6]);
363+
})
360364
});

src/Controllers/PushController.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,7 @@ export class PushController extends AdaptableController {
119119
}
120120
return this.adapter.send(payload, badgeInstallationsMap[badge]);
121121
});
122-
// Flatten the promises results
123-
return Promise.all(promises).then((results) => {
124-
if (Array.isArray(results)) {
125-
return Promise.resolve(results.reduce((memo, result) => {
126-
return memo.concat(result);
127-
},[]));
128-
} else {
129-
return Promise.resolve(results);
130-
}
131-
})
122+
return Promise.all(promises);
132123
}
133124
return this.adapter.send(body, installations);
134125
}

src/pushStatusHandler.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
import { md5Hash, newObjectId } from './cryptoUtils';
22

3+
export function flatten(array) {
4+
return array.reduce((memo, element) => {
5+
if (Array.isArray(element)) {
6+
memo = memo.concat(flatten(element));
7+
} else {
8+
memo = memo.concat(element);
9+
}
10+
return memo;
11+
}, []);
12+
}
13+
314
export default function pushStatusHandler(config) {
415

516
let initialPromise;
@@ -53,6 +64,7 @@ export default function pushStatusHandler(config) {
5364
numFailed: 0,
5465
};
5566
if (Array.isArray(results)) {
67+
results = flatten(results);
5668
results.reduce((memo, result) => {
5769
// Cannot handle that
5870
if (!result.device || !result.device.deviceType) {

0 commit comments

Comments
 (0)