Adds X-Parse-Push-Status-Id header (#1412)
* Adds X-Parse-Push-Status-Id header * Waits for _PushStatus to be stored
This commit is contained in:
@@ -67,7 +67,7 @@ describe('PushRouter', () => {
|
||||
}).toThrow();
|
||||
done();
|
||||
});
|
||||
|
||||
|
||||
it('sends a push through REST', (done) => {
|
||||
request.post({
|
||||
url: Parse.serverURL+"/push",
|
||||
@@ -82,8 +82,11 @@ describe('PushRouter', () => {
|
||||
'X-Parse-Master-Key': Parse.masterKey
|
||||
}
|
||||
}, function(err, res, body){
|
||||
expect(res.headers['x-parse-push-status-id']).not.toBe(undefined);
|
||||
expect(res.headers['x-parse-push-status-id'].length).toBe(10);
|
||||
expect(res.headers[''])
|
||||
expect(body.result).toBe(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -38,7 +38,7 @@ export class PushController extends AdaptableController {
|
||||
return !!this.adapter;
|
||||
}
|
||||
|
||||
sendPush(body = {}, where = {}, config, auth, wait) {
|
||||
sendPush(body = {}, where = {}, config, auth, onPushStatusSaved = () => {}) {
|
||||
var pushAdapter = this.adapter;
|
||||
if (!this.pushIsAvailable) {
|
||||
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
|
||||
@@ -84,6 +84,7 @@ export class PushController extends AdaptableController {
|
||||
return Promise.resolve().then(() => {
|
||||
return pushStatus.setInitial(body, where);
|
||||
}).then(() => {
|
||||
onPushStatusSaved(pushStatus.objectId);
|
||||
return badgeUpdate();
|
||||
}).then(() => {
|
||||
return rest.find(config, auth, '_Installation', where);
|
||||
|
||||
@@ -178,6 +178,11 @@ function makeExpressHandler(promiseHandler) {
|
||||
return res.send('Found. Redirecting to '+result.location);
|
||||
}
|
||||
}
|
||||
if (result.headers) {
|
||||
Object.keys(result.headers).forEach((header) => {
|
||||
res.set(header, result.headers[header]);
|
||||
})
|
||||
}
|
||||
res.json(result.response);
|
||||
}, (e) => {
|
||||
log.verbose('error:', e);
|
||||
|
||||
@@ -15,12 +15,21 @@ export class PushRouter extends PromiseRouter {
|
||||
}
|
||||
|
||||
let where = PushRouter.getQueryCondition(req);
|
||||
pushController.sendPush(req.body, where, req.config, req.auth);
|
||||
return Promise.resolve({
|
||||
response: {
|
||||
'result': true
|
||||
}
|
||||
let resolve;
|
||||
let promise = new Promise((_resolve) => {
|
||||
resolve = _resolve;
|
||||
});
|
||||
pushController.sendPush(req.body, where, req.config, req.auth, (pushStatusId) => {
|
||||
resolve({
|
||||
headers: {
|
||||
'X-Parse-Push-Status-Id': pushStatusId
|
||||
},
|
||||
response: {
|
||||
result: true
|
||||
}
|
||||
});
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,7 @@ export default function pushStatusHandler(config) {
|
||||
|
||||
let initialPromise;
|
||||
let pushStatus;
|
||||
|
||||
let objectId = newObjectId();
|
||||
let collection = function() {
|
||||
return config.database.adaptiveCollection('_PushStatus');
|
||||
}
|
||||
@@ -25,7 +25,7 @@ export default function pushStatusHandler(config) {
|
||||
let now = new Date();
|
||||
let data = body.data || {};
|
||||
let object = {
|
||||
objectId: newObjectId(),
|
||||
objectId,
|
||||
pushTime: now.toISOString(),
|
||||
_created_at: now,
|
||||
query: JSON.stringify(where),
|
||||
@@ -111,6 +111,7 @@ export default function pushStatusHandler(config) {
|
||||
}
|
||||
|
||||
return Object.freeze({
|
||||
objectId,
|
||||
setInitial,
|
||||
setRunning,
|
||||
complete,
|
||||
|
||||
Reference in New Issue
Block a user