Improve flattening of results from pushAdapter

This commit is contained in:
Florent Vilmart
2016-03-26 11:02:26 -04:00
parent d47a756f80
commit aeda714b87
4 changed files with 18 additions and 13 deletions

View File

@@ -18,7 +18,6 @@
], ],
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"dependencies": { "dependencies": {
"apn": "^1.7.5",
"babel-polyfill": "^6.5.0", "babel-polyfill": "^6.5.0",
"babel-runtime": "^6.5.0", "babel-runtime": "^6.5.0",
"bcrypt-nodejs": "0.0.3", "bcrypt-nodejs": "0.0.3",
@@ -32,7 +31,6 @@
"mime": "^1.3.4", "mime": "^1.3.4",
"mongodb": "~2.1.0", "mongodb": "~2.1.0",
"multer": "^1.1.0", "multer": "^1.1.0",
"node-gcm": "^0.14.0",
"parse": "^1.8.0", "parse": "^1.8.0",
"parse-server-fs-adapter": "^1.0.0", "parse-server-fs-adapter": "^1.0.0",
"parse-server-gcs-adapter": "^1.0.0", "parse-server-gcs-adapter": "^1.0.0",

View File

@@ -1,6 +1,6 @@
"use strict"; "use strict";
var PushController = require('../src/Controllers/PushController').PushController; var PushController = require('../src/Controllers/PushController').PushController;
var pushStatusHandler = require('../src/pushStatusHandler');
var Config = require('../src/Config'); var Config = require('../src/Config');
const successfulTransmissions = function(body, installations) { const successfulTransmissions = function(body, installations) {
@@ -357,4 +357,8 @@ describe('PushController', () => {
}); });
}); });
it('should flatten', () => {
var res = pushStatusHandler.flatten([1, [2], [[3, 4], 5], [[[6]]]])
expect(res).toEqual([1,2,3,4,5,6]);
})
}); });

View File

@@ -119,16 +119,7 @@ export class PushController extends AdaptableController {
} }
return this.adapter.send(payload, badgeInstallationsMap[badge]); return this.adapter.send(payload, badgeInstallationsMap[badge]);
}); });
// Flatten the promises results return Promise.all(promises);
return Promise.all(promises).then((results) => {
if (Array.isArray(results)) {
return Promise.resolve(results.reduce((memo, result) => {
return memo.concat(result);
},[]));
} else {
return Promise.resolve(results);
}
})
} }
return this.adapter.send(body, installations); return this.adapter.send(body, installations);
} }

View File

@@ -1,5 +1,16 @@
import { md5Hash, newObjectId } from './cryptoUtils'; import { md5Hash, newObjectId } from './cryptoUtils';
export function flatten(array) {
return array.reduce((memo, element) => {
if (Array.isArray(element)) {
memo = memo.concat(flatten(element));
} else {
memo = memo.concat(element);
}
return memo;
}, []);
}
export default function pushStatusHandler(config) { export default function pushStatusHandler(config) {
let initialPromise; let initialPromise;
@@ -53,6 +64,7 @@ export default function pushStatusHandler(config) {
numFailed: 0, numFailed: 0,
}; };
if (Array.isArray(results)) { if (Array.isArray(results)) {
results = flatten(results);
results.reduce((memo, result) => { results.reduce((memo, result) => {
// Cannot handle that // Cannot handle that
if (!result.device || !result.device.deviceType) { if (!result.device || !result.device.deviceType) {