mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
switch from Q to Bluebird
This commit is contained in:
@@ -30,7 +30,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
|
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// Load new models
|
// Load new models
|
||||||
var NewChallenge = require('../../website/src/models/challenge').model;
|
var NewChallenge = require('../../website/src/models/challenge').model;
|
||||||
@@ -165,7 +165,7 @@ function processChallenges (afterId) {
|
|||||||
|
|
||||||
console.log(`Saving ${oldChallenges.length} challenges and ${processedTasks} tasks.`);
|
console.log(`Saving ${oldChallenges.length} challenges and ${processedTasks} tasks.`);
|
||||||
|
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
batchInsertChallenges.execute(),
|
batchInsertChallenges.execute(),
|
||||||
batchInsertTasks.execute(),
|
batchInsertTasks.execute(),
|
||||||
]);
|
]);
|
||||||
@@ -187,7 +187,7 @@ function processChallenges (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
|
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// To be defined later when MongoClient connects
|
// To be defined later when MongoClient connects
|
||||||
var mongoDbOldInstance;
|
var mongoDbOldInstance;
|
||||||
@@ -103,7 +103,7 @@ function processChallenges (afterId) {
|
|||||||
|
|
||||||
console.log(`Migrating members of ${oldChallenges.length} challenges.`);
|
console.log(`Migrating members of ${oldChallenges.length} challenges.`);
|
||||||
|
|
||||||
return Q.all(promises);
|
return Bluebird.all(promises);
|
||||||
})
|
})
|
||||||
.then(function () {
|
.then(function () {
|
||||||
processedChallenges += oldChallenges.length;
|
processedChallenges += oldChallenges.length;
|
||||||
@@ -119,7 +119,7 @@ function processChallenges (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
|
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// Load new models
|
// Load new models
|
||||||
var Coupon = require('../../website/src/models/coupon').model;
|
var Coupon = require('../../website/src/models/coupon').model;
|
||||||
@@ -112,7 +112,7 @@ function processCoupons (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
|
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// Load new models
|
// Load new models
|
||||||
var EmailUnsubscription = require('../../website/src/models/emailUnsubscription').model;
|
var EmailUnsubscription = require('../../website/src/models/emailUnsubscription').model;
|
||||||
@@ -113,7 +113,7 @@ function processUnsubscriptions (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
|
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// Load new models
|
// Load new models
|
||||||
var NewGroup = require('../../website/src/models/group').model;
|
var NewGroup = require('../../website/src/models/group').model;
|
||||||
@@ -166,7 +166,7 @@ function processGroups (afterId) {
|
|||||||
console.log(`Saving ${oldGroups.length} groups and migrating members to users collection.`);
|
console.log(`Saving ${oldGroups.length} groups and migrating members to users collection.`);
|
||||||
|
|
||||||
promises.push(batchInsertGroups.execute());
|
promises.push(batchInsertGroups.execute());
|
||||||
return Q.all(promises);
|
return Bluebird.all(promises);
|
||||||
})
|
})
|
||||||
.then(function () {
|
.then(function () {
|
||||||
processedGroups += oldGroups.length;
|
processedGroups += oldGroups.length;
|
||||||
@@ -182,7 +182,7 @@ function processGroups (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ var MONGODB_NEW = nconf.get('MONGODB_NEW');
|
|||||||
var taskDefaults = common.taskDefaults;
|
var taskDefaults = common.taskDefaults;
|
||||||
var MongoClient = MongoDB.MongoClient;
|
var MongoClient = MongoDB.MongoClient;
|
||||||
|
|
||||||
mongoose.Promise = Q.Promise; // otherwise mongoose models won't work
|
mongoose.Promise = Bluebird.all; // otherwise mongoose models won't work
|
||||||
|
|
||||||
// Load new models
|
// Load new models
|
||||||
var NewUser = require('../../website/src/models/user').model;
|
var NewUser = require('../../website/src/models/user').model;
|
||||||
@@ -196,7 +196,7 @@ function processUsers (afterId) {
|
|||||||
|
|
||||||
console.log(`Saving ${oldUsers.length} users and ${processedTasks} tasks.`);
|
console.log(`Saving ${oldUsers.length} users and ${processedTasks} tasks.`);
|
||||||
|
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
batchInsertUsers.execute(),
|
batchInsertUsers.execute(),
|
||||||
batchInsertTasks.execute(),
|
batchInsertTasks.execute(),
|
||||||
]);
|
]);
|
||||||
@@ -218,7 +218,7 @@ function processUsers (afterId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Connect to the databases
|
// Connect to the databases
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
MongoClient.connect(MONGODB_OLD),
|
MongoClient.connect(MONGODB_OLD),
|
||||||
MongoClient.connect(MONGODB_NEW),
|
MongoClient.connect(MONGODB_NEW),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
"babel-preset-es2015": "^6.6.0",
|
"babel-preset-es2015": "^6.6.0",
|
||||||
"babel-register": "^6.6.0",
|
"babel-register": "^6.6.0",
|
||||||
"babelify": "^7.2.0",
|
"babelify": "^7.2.0",
|
||||||
|
"bluebird": "^3.3.5",
|
||||||
"body-parser": "^1.15.0",
|
"body-parser": "^1.15.0",
|
||||||
"bower": "~1.3.12",
|
"bower": "~1.3.12",
|
||||||
"browserify": "~12.0.1",
|
"browserify": "~12.0.1",
|
||||||
@@ -67,7 +68,6 @@
|
|||||||
"morgan": "^1.7.0",
|
"morgan": "^1.7.0",
|
||||||
"nconf": "~0.8.2",
|
"nconf": "~0.8.2",
|
||||||
"newrelic": "^1.27.2",
|
"newrelic": "^1.27.2",
|
||||||
"uuid": "^2.0.1",
|
|
||||||
"nib": "^1.1.0",
|
"nib": "^1.1.0",
|
||||||
"nodemailer": "^2.3.2",
|
"nodemailer": "^2.3.2",
|
||||||
"object-path": "^0.9.2",
|
"object-path": "^0.9.2",
|
||||||
@@ -79,7 +79,6 @@
|
|||||||
"pretty-data": "^0.40.0",
|
"pretty-data": "^0.40.0",
|
||||||
"ps-tree": "^1.0.0",
|
"ps-tree": "^1.0.0",
|
||||||
"push-notify": "^1.1.1",
|
"push-notify": "^1.1.1",
|
||||||
"q": "^1.4.1",
|
|
||||||
"request": "~2.72.0",
|
"request": "~2.72.0",
|
||||||
"rimraf": "^2.4.3",
|
"rimraf": "^2.4.3",
|
||||||
"run-sequence": "^1.1.4",
|
"run-sequence": "^1.1.4",
|
||||||
@@ -89,11 +88,11 @@
|
|||||||
"superagent": "^1.8.3",
|
"superagent": "^1.8.3",
|
||||||
"swagger-node-express": "lefnire/swagger-node-express#habitrpg",
|
"swagger-node-express": "lefnire/swagger-node-express#habitrpg",
|
||||||
"universal-analytics": "~0.3.2",
|
"universal-analytics": "~0.3.2",
|
||||||
|
"uuid": "^2.0.1",
|
||||||
"validator": "^4.9.0",
|
"validator": "^4.9.0",
|
||||||
"vinyl-buffer": "^1.0.0",
|
"vinyl-buffer": "^1.0.0",
|
||||||
"vinyl-source-stream": "^1.1.0",
|
"vinyl-source-stream": "^1.1.0",
|
||||||
"winston": "^2.1.0",
|
"winston": "^2.1.0"
|
||||||
"uuid": "^2.0.1"
|
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import mongoose from 'mongoose';
|
|||||||
import { exec } from 'child_process';
|
import { exec } from 'child_process';
|
||||||
import psTree from 'ps-tree';
|
import psTree from 'ps-tree';
|
||||||
import gulp from 'gulp';
|
import gulp from 'gulp';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import runSequence from 'run-sequence';
|
import runSequence from 'run-sequence';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
@@ -265,7 +265,7 @@ gulp.task('test:e2e', ['test:prepare', 'test:prepare:server'], (cb) => {
|
|||||||
].map(exec);
|
].map(exec);
|
||||||
support.push(server);
|
support.push(server);
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
awaitPort(TEST_SERVER_PORT),
|
awaitPort(TEST_SERVER_PORT),
|
||||||
awaitPort(4444)
|
awaitPort(4444)
|
||||||
]).then(() => {
|
]).then(() => {
|
||||||
@@ -286,7 +286,7 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => {
|
|||||||
'npm run test:e2e:webdriver',
|
'npm run test:e2e:webdriver',
|
||||||
].map(exec);
|
].map(exec);
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
awaitPort(TEST_SERVER_PORT),
|
awaitPort(TEST_SERVER_PORT),
|
||||||
awaitPort(4444)
|
awaitPort(4444)
|
||||||
]).then(() => {
|
]).then(() => {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { exec } from 'child_process';
|
|||||||
import psTree from 'ps-tree';
|
import psTree from 'ps-tree';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import net from 'net';
|
import net from 'net';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { post } from 'superagent';
|
import { post } from 'superagent';
|
||||||
import { sync as glob } from 'glob';
|
import { sync as glob } from 'glob';
|
||||||
import Mocha from 'mocha';
|
import Mocha from 'mocha';
|
||||||
@@ -43,13 +43,13 @@ export function kill(proc) {
|
|||||||
* has fully spun up. Optionally provide a maximum number of seconds to wait
|
* has fully spun up. Optionally provide a maximum number of seconds to wait
|
||||||
* before failing.
|
* before failing.
|
||||||
*/
|
*/
|
||||||
export function awaitPort(port, max=60) {
|
export function awaitPort (port, max=60) {
|
||||||
|
return new Bluebird((reject, resolve) => {
|
||||||
let socket, timeout, interval;
|
let socket, timeout, interval;
|
||||||
let deferred = Q.defer();
|
|
||||||
|
|
||||||
timeout = setTimeout(() => {
|
timeout = setTimeout(() => {
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
deferred.reject(`Timed out after ${max} seconds`);
|
reject(`Timed out after ${max} seconds`);
|
||||||
}, max * 1000);
|
}, max * 1000);
|
||||||
|
|
||||||
interval = setInterval(() => {
|
interval = setInterval(() => {
|
||||||
@@ -57,11 +57,10 @@ export function awaitPort(port, max=60) {
|
|||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
socket.destroy();
|
socket.destroy();
|
||||||
deferred.resolve();
|
resolve();
|
||||||
}).on('error', () => { socket.destroy });
|
}).on('error', () => { socket.destroy });
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
});
|
||||||
return deferred.promise
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ superagentDefaults = require("superagent-defaults");
|
|||||||
global.request = superagentDefaults();
|
global.request = superagentDefaults();
|
||||||
|
|
||||||
global.mongoose = require("mongoose");
|
global.mongoose = require("mongoose");
|
||||||
var Q = require('q');
|
var Bluebird = require('bluebird');
|
||||||
mongoose.Promise = Q.Promise;
|
mongoose.Promise = Bluebird;
|
||||||
|
|
||||||
global.moment = require("moment");
|
global.moment = require("moment");
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
find,
|
find,
|
||||||
map,
|
map,
|
||||||
} from 'lodash';
|
} from 'lodash';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
describe('DELETE /user', () => {
|
describe('DELETE /user', () => {
|
||||||
let user;
|
let user;
|
||||||
@@ -30,7 +30,7 @@ describe('DELETE /user', () => {
|
|||||||
|
|
||||||
await user.del('/user');
|
await user.del('/user');
|
||||||
|
|
||||||
await Q.all(map(ids, id => {
|
await Bluebird.all(map(ids, id => {
|
||||||
return expect(checkExistence('tasks', id)).to.eventually.eql(false);
|
return expect(checkExistence('tasks', id)).to.eventually.eql(false);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ import {
|
|||||||
generateUser,
|
generateUser,
|
||||||
} from '../../../../helpers/api-v3-integration.helper';
|
} from '../../../../helpers/api-v3-integration.helper';
|
||||||
import xml2js from 'xml2js';
|
import xml2js from 'xml2js';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
|
let parseStringAsync = Bluebird.promisify(xml2js.parseString, {context: xml2js});
|
||||||
|
|
||||||
describe('GET /export/userdata.xml', () => {
|
describe('GET /export/userdata.xml', () => {
|
||||||
it('should return a valid XML file with user data', async () => {
|
it('should return a valid XML file with user data', async () => {
|
||||||
@@ -22,7 +24,7 @@ describe('GET /export/userdata.xml', () => {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
let response = await user.get('/export/userdata.xml');
|
let response = await user.get('/export/userdata.xml');
|
||||||
let {user: res} = await Q.npost(xml2js, 'parseString', [response, {explicitArray: false}]);
|
let {user: res} = await parseStringAsync(response, {explicitArray: false});
|
||||||
|
|
||||||
expect(res._id).to.equal(user._id);
|
expect(res._id).to.equal(user._id);
|
||||||
expect(res).to.contain.all.keys(['tasks', 'flags', 'tasksOrder', 'auth']);
|
expect(res).to.contain.all.keys(['tasks', 'flags', 'tasksOrder', 'auth']);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
each,
|
each,
|
||||||
map,
|
map,
|
||||||
} from 'lodash';
|
} from 'lodash';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
describe('DELETE /user', () => {
|
describe('DELETE /user', () => {
|
||||||
let user;
|
let user;
|
||||||
@@ -55,7 +55,7 @@ describe('DELETE /user', () => {
|
|||||||
password,
|
password,
|
||||||
});
|
});
|
||||||
|
|
||||||
await Q.all(map(ids, id => {
|
await Bluebird.all(map(ids, id => {
|
||||||
return expect(checkExistence('tasks', id)).to.eventually.eql(false);
|
return expect(checkExistence('tasks', id)).to.eventually.eql(false);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,10 +2,25 @@
|
|||||||
import request from 'request';
|
import request from 'request';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import nodemailer from 'nodemailer';
|
import nodemailer from 'nodemailer';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import requireAgain from 'require-again';
|
import requireAgain from 'require-again';
|
||||||
import logger from '../../../../../website/src/libs/api-v3/logger';
|
import logger from '../../../../../website/src/libs/api-v3/logger';
|
||||||
|
|
||||||
|
function defer () {
|
||||||
|
let resolve;
|
||||||
|
let reject;
|
||||||
|
let promise = new Bluebird(() => {
|
||||||
|
resolve = arguments[0];
|
||||||
|
reject = arguments[1];
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
resolve,
|
||||||
|
reject,
|
||||||
|
promise,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function getUser () {
|
function getUser () {
|
||||||
return {
|
return {
|
||||||
_id: 'random _id',
|
_id: 'random _id',
|
||||||
@@ -37,7 +52,7 @@ describe('emails', () => {
|
|||||||
|
|
||||||
describe('sendEmail', () => {
|
describe('sendEmail', () => {
|
||||||
it('can send an email using the default transport', () => {
|
it('can send an email using the default transport', () => {
|
||||||
let sendMailSpy = sandbox.stub().returns(Q.defer().promise);
|
let sendMailSpy = sandbox.stub().returns(defer().promise);
|
||||||
|
|
||||||
sandbox.stub(nodemailer, 'createTransport').returns({
|
sandbox.stub(nodemailer, 'createTransport').returns({
|
||||||
sendMail: sendMailSpy,
|
sendMail: sendMailSpy,
|
||||||
@@ -49,7 +64,7 @@ describe('emails', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('logs errors', (done) => {
|
it('logs errors', (done) => {
|
||||||
let deferred = Q.defer();
|
let deferred = defer();
|
||||||
let sendMailSpy = sandbox.stub().returns(deferred.promise);
|
let sendMailSpy = sandbox.stub().returns(deferred.promise);
|
||||||
|
|
||||||
sandbox.stub(nodemailer, 'createTransport').returns({
|
sandbox.stub(nodemailer, 'createTransport').returns({
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
attachTranslateFunction,
|
attachTranslateFunction,
|
||||||
} from '../../../../../website/src/middlewares/api-v3/language';
|
} from '../../../../../website/src/middlewares/api-v3/language';
|
||||||
import common from '../../../../../common';
|
import common from '../../../../../common';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { model as User } from '../../../../../website/src/models/user';
|
import { model as User } from '../../../../../website/src/models/user';
|
||||||
|
|
||||||
const i18n = common.i18n;
|
const i18n = common.i18n;
|
||||||
@@ -162,7 +162,7 @@ describe('language middleware', () => {
|
|||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
exec () {
|
exec () {
|
||||||
return Q.resolve({
|
return Bluebird.resolve({
|
||||||
preferences: {
|
preferences: {
|
||||||
language: 'it',
|
language: 'it',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {
|
|||||||
times,
|
times,
|
||||||
map,
|
map,
|
||||||
} from 'lodash';
|
} from 'lodash';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { v4 as generateUUID } from 'uuid';
|
import { v4 as generateUUID } from 'uuid';
|
||||||
import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes';
|
import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes';
|
||||||
import { requester } from '../requester';
|
import { requester } from '../requester';
|
||||||
@@ -57,7 +57,7 @@ export async function generateGroup (leader, details = {}, update = {}) {
|
|||||||
guild: { guilds: [group._id] },
|
guild: { guilds: [group._id] },
|
||||||
};
|
};
|
||||||
|
|
||||||
await Q.all(
|
await Bluebird.all(
|
||||||
map(members, (member) => {
|
map(members, (member) => {
|
||||||
return member.update(groupMembershipTypes[group.type]);
|
return member.update(groupMembershipTypes[group.type]);
|
||||||
})
|
})
|
||||||
@@ -96,7 +96,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
guild: { guilds: [group._id] },
|
guild: { guilds: [group._id] },
|
||||||
};
|
};
|
||||||
|
|
||||||
let members = await Q.all(
|
let members = await Bluebird.all(
|
||||||
times(numberOfMembers, () => {
|
times(numberOfMembers, () => {
|
||||||
return generateUser(groupMembershipTypes[group.type]);
|
return generateUser(groupMembershipTypes[group.type]);
|
||||||
})
|
})
|
||||||
@@ -104,7 +104,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
|
|
||||||
await group.update({ memberCount: numberOfMembers + 1});
|
await group.update({ memberCount: numberOfMembers + 1});
|
||||||
|
|
||||||
let invitees = await Q.all(
|
let invitees = await Bluebird.all(
|
||||||
times(numberOfInvites, () => {
|
times(numberOfInvites, () => {
|
||||||
return generateUser();
|
return generateUser();
|
||||||
})
|
})
|
||||||
@@ -116,7 +116,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
await Q.all(invitationPromises);
|
await Bluebird.all(invitationPromises);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
groupLeader,
|
groupLeader,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
times,
|
times,
|
||||||
} from 'lodash';
|
} from 'lodash';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { v4 as generateUUID } from 'uuid';
|
import { v4 as generateUUID } from 'uuid';
|
||||||
import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes';
|
import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes';
|
||||||
import { requester } from '../requester';
|
import { requester } from '../requester';
|
||||||
@@ -106,7 +106,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
guild: { guilds: [group._id] },
|
guild: { guilds: [group._id] },
|
||||||
};
|
};
|
||||||
|
|
||||||
let members = await Q.all(
|
let members = await Bluebird.all(
|
||||||
times(numberOfMembers, () => {
|
times(numberOfMembers, () => {
|
||||||
return generateUser(groupMembershipTypes[group.type]);
|
return generateUser(groupMembershipTypes[group.type]);
|
||||||
})
|
})
|
||||||
@@ -114,7 +114,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
|
|
||||||
await group.update({ memberCount: numberOfMembers + 1});
|
await group.update({ memberCount: numberOfMembers + 1});
|
||||||
|
|
||||||
let invitees = await Q.all(
|
let invitees = await Bluebird.all(
|
||||||
times(numberOfInvites, () => {
|
times(numberOfInvites, () => {
|
||||||
return generateUser();
|
return generateUser();
|
||||||
})
|
})
|
||||||
@@ -126,7 +126,7 @@ export async function createAndPopulateGroup (settings = {}) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
await Q.all(invitationPromises);
|
await Bluebird.all(invitationPromises);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
groupLeader,
|
groupLeader,
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
/* eslint-disable no-undef */
|
/* eslint-disable no-undef */
|
||||||
/* eslint-disable global-require */
|
/* eslint-disable global-require */
|
||||||
/* eslint-disable no-process-env */
|
/* eslint-disable no-process-env */
|
||||||
|
|
||||||
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
//------------------------------
|
//------------------------------
|
||||||
// Global modules
|
// Global modules
|
||||||
//------------------------------
|
//------------------------------
|
||||||
|
|
||||||
global._ = require('lodash');
|
global._ = require('lodash');
|
||||||
global.chai = require('chai');
|
global.chai = require('chai');
|
||||||
chai.use(require('sinon-chai'));
|
chai.use(require('sinon-chai'));
|
||||||
@@ -12,10 +14,10 @@ chai.use(require('chai-as-promised'));
|
|||||||
global.expect = chai.expect;
|
global.expect = chai.expect;
|
||||||
global.sinon = require('sinon');
|
global.sinon = require('sinon');
|
||||||
global.sandbox = sinon.sandbox.create();
|
global.sandbox = sinon.sandbox.create();
|
||||||
|
global.Promise = Bluebird;
|
||||||
|
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
import Q from 'q';
|
|
||||||
|
|
||||||
//------------------------------
|
//------------------------------
|
||||||
// Load nconf for unit tests
|
// Load nconf for unit tests
|
||||||
@@ -23,7 +25,7 @@ import Q from 'q';
|
|||||||
if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose
|
if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose
|
||||||
require('../../website/src/libs/api-v3/setupNconf')('./config.json');
|
require('../../website/src/libs/api-v3/setupNconf')('./config.json');
|
||||||
// Use Q promises instead of mpromise in mongoose
|
// Use Q promises instead of mpromise in mongoose
|
||||||
mongoose.Promise = Q.Promise;
|
mongoose.Promise = Bluebird;
|
||||||
mongoose.connect(nconf.get('NODE_DB_URI'));
|
mongoose.connect(nconf.get('NODE_DB_URI'));
|
||||||
} else { // When running tests and the server in the same process
|
} else { // When running tests and the server in the same process
|
||||||
require('../../website/src/libs/api-v3/setupNconf')('./config.json.example');
|
require('../../website/src/libs/api-v3/setupNconf')('./config.json.example');
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ var chai = require("chai");
|
|||||||
chai.use(require("sinon-chai"));
|
chai.use(require("sinon-chai"));
|
||||||
var expect = chai.expect;
|
var expect = chai.expect;
|
||||||
|
|
||||||
var Q = require('q');
|
var Bluebird = require('bluebird');
|
||||||
var Group = require('../../../website/src/models/group').model;
|
var Group = require('../../../website/src/models/group').model;
|
||||||
var groupsController = require('../../../website/src/controllers/api-v2/groups');
|
var groupsController = require('../../../website/src/controllers/api-v2/groups');
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@ describe('Groups Controller', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
Q.all.restore();
|
Promise.all.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
context('error conditions', function() {
|
context('error conditions', function() {
|
||||||
@@ -342,7 +342,7 @@ describe('Groups Controller', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('sends 500 if group cannot save', function() {
|
it('sends 500 if group cannot save', function() {
|
||||||
Q.all.returns({
|
Promise.all.returns({
|
||||||
done: sinon.stub().callsArgWith(1, {err: 'save error'})
|
done: sinon.stub().callsArgWith(1, {err: 'save error'})
|
||||||
});
|
});
|
||||||
var nextSpy = sinon.spy();
|
var nextSpy = sinon.spy();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ var csvStringify = require('csv-stringify');
|
|||||||
var utils = require('../../libs/api-v2/utils');
|
var utils = require('../../libs/api-v2/utils');
|
||||||
var api = module.exports;
|
var api = module.exports;
|
||||||
var pushNotify = require('./pushNotifications');
|
var pushNotify = require('./pushNotifications');
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import v3MembersController from '../api-v3/members';
|
import v3MembersController from '../api-v3/members';
|
||||||
/*
|
/*
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
@@ -56,8 +56,8 @@ api.list = async function(req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// TODO Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// TODO Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
await Q.all(resChals.map((chal, index) => {
|
await Bluebird.all(resChals.map((chal, index) => {
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
User.findById(chal.leader).select(nameFields).exec(),
|
User.findById(chal.leader).select(nameFields).exec(),
|
||||||
Group.findById(chal.group).select(basicGroupFields).exec(),
|
Group.findById(chal.group).select(basicGroupFields).exec(),
|
||||||
]).then(populatedData => {
|
]).then(populatedData => {
|
||||||
@@ -207,7 +207,7 @@ api.create = async function(req, res, next){
|
|||||||
return newTask.save();
|
return newTask.save();
|
||||||
});
|
});
|
||||||
|
|
||||||
let results = await Q.all([challenge.save({
|
let results = await Bluebird.all([challenge.save({
|
||||||
validateBeforeSave: false, // already validated
|
validateBeforeSave: false, // already validated
|
||||||
}), group.save()].concat(chalTasks));
|
}), group.save()].concat(chalTasks));
|
||||||
let savedChal = results[0];
|
let savedChal = results[0];
|
||||||
@@ -346,7 +346,7 @@ api.join = async function(req, res, next){
|
|||||||
challenge.memberCount += 1;
|
challenge.memberCount += 1;
|
||||||
|
|
||||||
// Add all challenge's tasks to user's tasks and save the challenge
|
// Add all challenge's tasks to user's tasks and save the challenge
|
||||||
await Q.all([challenge.syncToUser(user), challenge.save()]);
|
await Bluebird.all([challenge.syncToUser(user), challenge.save()]);
|
||||||
|
|
||||||
challenge.getTransformedData({
|
challenge.getTransformedData({
|
||||||
cb (err, transformedChal) {
|
cb (err, transformedChal) {
|
||||||
@@ -377,7 +377,7 @@ api.leave = async function(req, res, next){
|
|||||||
challenge.memberCount -= 1;
|
challenge.memberCount -= 1;
|
||||||
|
|
||||||
// Unlink challenge's tasks from user's tasks and save the challenge
|
// Unlink challenge's tasks from user's tasks and save the challenge
|
||||||
await Q.all([challenge.unlinkTasks(user, keep), challenge.save()]);
|
await Bluebird.all([challenge.unlinkTasks(user, keep), challenge.save()]);
|
||||||
|
|
||||||
challenge.getTransformedData({
|
challenge.getTransformedData({
|
||||||
cb (err, transformedChal) {
|
cb (err, transformedChal) {
|
||||||
@@ -416,7 +416,7 @@ api.unlink = async function(req, res, next) {
|
|||||||
} else { // remove
|
} else { // remove
|
||||||
if (task.type !== 'todo' || !task.completed) { // eslint-disable-line no-lonely-if
|
if (task.type !== 'todo' || !task.completed) { // eslint-disable-line no-lonely-if
|
||||||
removeFromArray(user.tasksOrder[`${task.type}s`], tid);
|
removeFromArray(user.tasksOrder[`${task.type}s`], tid);
|
||||||
await Q.all([user.save(), task.remove()]);
|
await Bluebird.all([user.save(), task.remove()]);
|
||||||
} else {
|
} else {
|
||||||
await task.remove();
|
await task.remove();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1013,7 +1013,7 @@ api.questAccept = function(req, res, next) {
|
|||||||
|
|
||||||
if (canStartQuestAutomatically(group)) {
|
if (canStartQuestAutomatically(group)) {
|
||||||
group.startQuest(user).then(() => {
|
group.startQuest(user).then(() => {
|
||||||
return Q.all([group.save(), user.save()])
|
return Bluebird.all([group.save(), user.save()])
|
||||||
})
|
})
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
@@ -1027,7 +1027,7 @@ api.questAccept = function(req, res, next) {
|
|||||||
.catch(next);
|
.catch(next);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Q.all([group.save(), user.save()])
|
Bluebird.all([group.save(), user.save()])
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
cb (err, groupTransformed) {
|
cb (err, groupTransformed) {
|
||||||
@@ -1049,7 +1049,7 @@ api.questAccept = function(req, res, next) {
|
|||||||
|
|
||||||
if (canStartQuestAutomatically(group)) {
|
if (canStartQuestAutomatically(group)) {
|
||||||
group.startQuest(user).then(() => {
|
group.startQuest(user).then(() => {
|
||||||
return Q.all([group.save(), user.save()])
|
return Bluebird.all([group.save(), user.save()])
|
||||||
})
|
})
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
@@ -1063,7 +1063,7 @@ api.questAccept = function(req, res, next) {
|
|||||||
.catch(next);
|
.catch(next);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Q.all([group.save(), user.save()])
|
Bluebird.all([group.save(), user.save()])
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
cb (err, groupTransformed) {
|
cb (err, groupTransformed) {
|
||||||
@@ -1090,7 +1090,7 @@ api.questReject = function(req, res, next) {
|
|||||||
|
|
||||||
if (canStartQuestAutomatically(group)) {
|
if (canStartQuestAutomatically(group)) {
|
||||||
group.startQuest(user).then(() => {
|
group.startQuest(user).then(() => {
|
||||||
return Q.all([group.save(), user.save()])
|
return Bluebird.all([group.save(), user.save()])
|
||||||
})
|
})
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
@@ -1104,7 +1104,7 @@ api.questReject = function(req, res, next) {
|
|||||||
.catch(next);
|
.catch(next);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Q.all([group.save(), user.save()])
|
Bluebird.all([group.save(), user.save()])
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
cb (err, groupTransformed) {
|
cb (err, groupTransformed) {
|
||||||
@@ -1124,7 +1124,7 @@ api.questCancel = function(req, res, next){
|
|||||||
group.quest = Group.cleanGroupQuest();
|
group.quest = Group.cleanGroupQuest();
|
||||||
group.markModified('quest');
|
group.markModified('quest');
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
User.update(
|
User.update(
|
||||||
{'party._id': group._id},
|
{'party._id': group._id},
|
||||||
@@ -1167,7 +1167,7 @@ api.questAbort = function(req, res, next){
|
|||||||
group.quest = Group.cleanGroupQuest();
|
group.quest = Group.cleanGroupQuest();
|
||||||
group.markModified('quest');
|
group.markModified('quest');
|
||||||
|
|
||||||
Q.all([group.save(), memberUpdates, questLeaderUpdate])
|
Bluebird.all([group.save(), memberUpdates, questLeaderUpdate])
|
||||||
.then(results => {
|
.then(results => {
|
||||||
results[0].getTransformedData({
|
results[0].getTransformedData({
|
||||||
cb (err, groupTransformed) {
|
cb (err, groupTransformed) {
|
||||||
@@ -1203,10 +1203,10 @@ api.questLeave = function(req, res, next) {
|
|||||||
user.party.quest = Group.cleanQuestProgress();
|
user.party.quest = Group.cleanQuestProgress();
|
||||||
user.markModified('party.quest');
|
user.markModified('party.quest');
|
||||||
|
|
||||||
var groupSavePromise = Q.nbind(group.save, group);
|
var groupSavePromise = Bluebird.promisify(group.save, {context: group});
|
||||||
var userSavePromise = Q.nbind(user.save, user);
|
var userSavePromise = Bluebird.promisify(user.save, {context: user});
|
||||||
|
|
||||||
Q.all([groupSavePromise(), userSavePromise()])
|
Bluebird.all([groupSavePromise(), userSavePromise()])
|
||||||
.done(function(values) {
|
.done(function(values) {
|
||||||
return res.sendStatus(204);
|
return res.sendStatus(204);
|
||||||
}, function(error) {
|
}, function(error) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
} from '../../libs/api-v3/errors';
|
} from '../../libs/api-v3/errors';
|
||||||
import { model as Tag } from '../../models/tag';
|
import { model as Tag } from '../../models/tag';
|
||||||
import * as Tasks from '../../models/task';
|
import * as Tasks from '../../models/task';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import {removeFromArray} from './../../libs/api-v3/collectionManipulators';
|
import {removeFromArray} from './../../libs/api-v3/collectionManipulators';
|
||||||
var utils = require('./../../libs/api-v2/utils');
|
var utils = require('./../../libs/api-v2/utils');
|
||||||
var analytics = utils.analytics;
|
var analytics = utils.analytics;
|
||||||
@@ -434,7 +434,7 @@ api.delete = function(req, res, next) {
|
|||||||
|
|
||||||
Group.getGroups({user, types, groupFields})
|
Group.getGroups({user, types, groupFields})
|
||||||
.then(groups => {
|
.then(groups => {
|
||||||
return Q.all(groups.map((group) => {
|
return Bluebird.all(groups.map((group) => {
|
||||||
return group.leave(user, 'remove-all');
|
return group.leave(user, 'remove-all');
|
||||||
}));
|
}));
|
||||||
})
|
})
|
||||||
@@ -651,7 +651,7 @@ api.cast = async function(req, res, next) {
|
|||||||
let toSave = tasks.filter(t => t.isModified());
|
let toSave = tasks.filter(t => t.isModified());
|
||||||
let isUserModified = user.isModified();
|
let isUserModified = user.isModified();
|
||||||
toSave.unshift(user.save());
|
toSave.unshift(user.save());
|
||||||
let saved = await Q.all(toSave);
|
let saved = await Bluebird.all(toSave);
|
||||||
} else if (targetType === 'party' || targetType === 'user') {
|
} else if (targetType === 'party' || targetType === 'user') {
|
||||||
let party = await Group.getGroup({groupId: 'party', user});
|
let party = await Group.getGroup({groupId: 'party', user});
|
||||||
// arrays of users when targetType is 'party' otherwise single users
|
// arrays of users when targetType is 'party' otherwise single users
|
||||||
@@ -665,7 +665,7 @@ api.cast = async function(req, res, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spell.cast(user, partyMembers, req);
|
spell.cast(user, partyMembers, req);
|
||||||
await Q.all(partyMembers.map(m => m.save()));
|
await Bluebird.all(partyMembers.map(m => m.save()));
|
||||||
} else {
|
} else {
|
||||||
if (!party && (!targetId || user._id === targetId)) {
|
if (!party && (!targetId || user._id === targetId)) {
|
||||||
partyMembers = user;
|
partyMembers = user;
|
||||||
@@ -678,7 +678,7 @@ api.cast = async function(req, res, next) {
|
|||||||
if (partyMembers === user) {
|
if (partyMembers === user) {
|
||||||
await partyMembers.save();
|
await partyMembers.save();
|
||||||
} else {
|
} else {
|
||||||
await Q.all([
|
await Bluebird.all([
|
||||||
await partyMembers.save(),
|
await partyMembers.save(),
|
||||||
await user.save(),
|
await user.save(),
|
||||||
]);
|
]);
|
||||||
@@ -869,7 +869,7 @@ api.addTask = function(req, res, next) {
|
|||||||
let validationErrors = task.validateSync();
|
let validationErrors = task.validateSync();
|
||||||
if (validationErrors) return next(validationErrors);
|
if (validationErrors) return next(validationErrors);
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
user.save(),
|
user.save(),
|
||||||
task.save({validateBeforeSave: false}) // already done ^
|
task.save({validateBeforeSave: false}) // already done ^
|
||||||
]).then(results => {
|
]).then(results => {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
BadRequest,
|
BadRequest,
|
||||||
NotFound,
|
NotFound,
|
||||||
} from '../../libs/api-v3/errors';
|
} from '../../libs/api-v3/errors';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import * as passwordUtils from '../../libs/api-v3/password';
|
import * as passwordUtils from '../../libs/api-v3/password';
|
||||||
import logger from '../../libs/api-v3/logger';
|
import logger from '../../libs/api-v3/logger';
|
||||||
import { model as User } from '../../models/user';
|
import { model as User } from '../../models/user';
|
||||||
@@ -215,17 +215,15 @@ api.loginLocal = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function _passportFbProfile (accessToken) {
|
function _passportFbProfile (accessToken) {
|
||||||
let deferred = Q.defer();
|
return new Bluebird((resolve, reject) => {
|
||||||
|
|
||||||
passport._strategies.facebook.userProfile(accessToken, (err, profile) => {
|
passport._strategies.facebook.userProfile(accessToken, (err, profile) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
deferred.rejec();
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
deferred.resolve(profile);
|
resolve(profile);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
return deferred.promise;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called as a callback by Facebook (or other social providers). Internal route
|
// Called as a callback by Facebook (or other social providers). Internal route
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
NotAuthorized,
|
NotAuthorized,
|
||||||
} from '../../libs/api-v3/errors';
|
} from '../../libs/api-v3/errors';
|
||||||
import * as Tasks from '../../models/task';
|
import * as Tasks from '../../models/task';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import csvStringify from '../../libs/api-v3/csvStringify';
|
import csvStringify from '../../libs/api-v3/csvStringify';
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
@@ -87,7 +87,7 @@ api.createChallenge = {
|
|||||||
let challengeValidationErrors = challenge.validateSync();
|
let challengeValidationErrors = challenge.validateSync();
|
||||||
if (challengeValidationErrors) throw challengeValidationErrors;
|
if (challengeValidationErrors) throw challengeValidationErrors;
|
||||||
|
|
||||||
let results = await Q.all([challenge.save({
|
let results = await Bluebird.all([challenge.save({
|
||||||
validateBeforeSave: false, // already validate
|
validateBeforeSave: false, // already validate
|
||||||
}), group.save()]);
|
}), group.save()]);
|
||||||
let savedChal = results[0];
|
let savedChal = results[0];
|
||||||
@@ -141,7 +141,7 @@ api.joinChallenge = {
|
|||||||
challenge.memberCount += 1;
|
challenge.memberCount += 1;
|
||||||
|
|
||||||
// Add all challenge's tasks to user's tasks and save the challenge
|
// Add all challenge's tasks to user's tasks and save the challenge
|
||||||
let results = await Q.all([challenge.syncToUser(user), challenge.save()]);
|
let results = await Bluebird.all([challenge.syncToUser(user), challenge.save()]);
|
||||||
|
|
||||||
let response = results[1].toJSON();
|
let response = results[1].toJSON();
|
||||||
response.group = { // we already have the group data
|
response.group = { // we already have the group data
|
||||||
@@ -190,7 +190,7 @@ api.leaveChallenge = {
|
|||||||
challenge.memberCount -= 1;
|
challenge.memberCount -= 1;
|
||||||
|
|
||||||
// Unlink challenge's tasks from user's tasks and save the challenge
|
// Unlink challenge's tasks from user's tasks and save the challenge
|
||||||
await Q.all([challenge.unlinkTasks(user, keep), challenge.save()]);
|
await Bluebird.all([challenge.unlinkTasks(user, keep), challenge.save()]);
|
||||||
res.respond(200, {});
|
res.respond(200, {});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -226,8 +226,8 @@ api.getUserChallenges = {
|
|||||||
|
|
||||||
let resChals = challenges.map(challenge => challenge.toJSON());
|
let resChals = challenges.map(challenge => challenge.toJSON());
|
||||||
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
await Q.all(resChals.map((chal, index) => {
|
await Bluebird.all(resChals.map((chal, index) => {
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
User.findById(chal.leader).select(nameFields).exec(),
|
User.findById(chal.leader).select(nameFields).exec(),
|
||||||
Group.findById(chal.group).select(basicGroupFields).exec(),
|
Group.findById(chal.group).select(basicGroupFields).exec(),
|
||||||
]).then(populatedData => {
|
]).then(populatedData => {
|
||||||
@@ -274,7 +274,7 @@ api.getGroupChallenges = {
|
|||||||
|
|
||||||
let resChals = challenges.map(challenge => challenge.toJSON());
|
let resChals = challenges.map(challenge => challenge.toJSON());
|
||||||
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
await Q.all(resChals.map((chal, index) => {
|
await Bluebird.all(resChals.map((chal, index) => {
|
||||||
return User.findById(chal.leader).select(nameFields).exec().then(populatedLeader => {
|
return User.findById(chal.leader).select(nameFields).exec().then(populatedLeader => {
|
||||||
resChals[index].leader = populatedLeader ? populatedLeader.toJSON({minimize: true}) : null;
|
resChals[index].leader = populatedLeader ? populatedLeader.toJSON({minimize: true}) : null;
|
||||||
});
|
});
|
||||||
@@ -358,7 +358,7 @@ api.exportChallengeCsv = {
|
|||||||
// In v2 this used the aggregation framework to run some computation on MongoDB but then iterated through all
|
// In v2 this used the aggregation framework to run some computation on MongoDB but then iterated through all
|
||||||
// results on the server so the perf difference isn't that big (hopefully)
|
// results on the server so the perf difference isn't that big (hopefully)
|
||||||
|
|
||||||
let [members, tasks] = await Q.all([
|
let [members, tasks] = await Bluebird.all([
|
||||||
User.find({challenges: challengeId})
|
User.find({challenges: challengeId})
|
||||||
.select(nameFields)
|
.select(nameFields)
|
||||||
.sort({_id: 1})
|
.sort({_id: 1})
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import _ from 'lodash';
|
|||||||
import { removeFromArray } from '../../libs/api-v3/collectionManipulators';
|
import { removeFromArray } from '../../libs/api-v3/collectionManipulators';
|
||||||
import { sendTxn } from '../../libs/api-v3/email';
|
import { sendTxn } from '../../libs/api-v3/email';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => {
|
const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => {
|
||||||
return { email, canSend: true };
|
return { email, canSend: true };
|
||||||
@@ -95,7 +95,7 @@ api.postChat = {
|
|||||||
toSave.push(user.save());
|
toSave.push(user.save());
|
||||||
}
|
}
|
||||||
|
|
||||||
let [savedGroup] = await Q.all(toSave);
|
let [savedGroup] = await Bluebird.all(toSave);
|
||||||
if (chatUpdated) {
|
if (chatUpdated) {
|
||||||
res.respond(200, {chat: Group.toJSONCleanChat(savedGroup, user).chat});
|
res.respond(200, {chat: Group.toJSONCleanChat(savedGroup, user).chat});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import common from '../../../../common';
|
import common from '../../../../common';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { langCodes } from '../../libs/api-v3/i18n';
|
import { langCodes } from '../../libs/api-v3/i18n';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import fsCallback from 'fs';
|
import fsCallback from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import logger from '../../libs/api-v3/logger';
|
import logger from '../../libs/api-v3/logger';
|
||||||
|
|
||||||
// Transform fs methods that accept callbacks in ones that return promises
|
// Transform fs methods that accept callbacks in ones that return promises
|
||||||
const fs = {
|
const fs = {
|
||||||
readFile: Q.denodeify(fsCallback.readFile),
|
readFile: Bluebird.promisify(fsCallback.readFile, {context: fsCallback}),
|
||||||
writeFile: Q.denodeify(fsCallback.writeFile),
|
writeFile: Bluebird.promisify(fsCallback.writeFile, {context: fsCallback}),
|
||||||
stat: Q.denodeify(fsCallback.stat),
|
stat: Bluebird.promisify(fsCallback.stat, {context: fsCallback}),
|
||||||
mkdir: Q.denodeify(fsCallback.mkdir),
|
mkdir: Bluebird.promisify(fsCallback.mkdir, {context: fsCallback}),
|
||||||
};
|
};
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { authWithHeaders } from '../../middlewares/api-v3/auth';
|
import { authWithHeaders } from '../../middlewares/api-v3/auth';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import {
|
import {
|
||||||
INVITES_LIMIT,
|
INVITES_LIMIT,
|
||||||
@@ -55,7 +55,7 @@ api.createGroup = {
|
|||||||
user.party._id = group._id;
|
user.party._id = group._id;
|
||||||
}
|
}
|
||||||
|
|
||||||
let results = await Q.all([user.save(), group.save()]);
|
let results = await Bluebird.all([user.save(), group.save()]);
|
||||||
let savedGroup = results[1];
|
let savedGroup = results[1];
|
||||||
|
|
||||||
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
@@ -274,7 +274,7 @@ api.joinGroup = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await Q.all(promises);
|
await Bluebird.all(promises);
|
||||||
|
|
||||||
let response = Group.toJSONCleanChat(promises[0], user);
|
let response = Group.toJSONCleanChat(promises[0], user);
|
||||||
response.leader = (await User.findById(response.leader).select(nameFields).exec()).toJSON({minimize: true});
|
response.leader = (await User.findById(response.leader).select(nameFields).exec()).toJSON({minimize: true});
|
||||||
@@ -475,7 +475,7 @@ api.removeGroupMember = {
|
|||||||
let message = req.query.message;
|
let message = req.query.message;
|
||||||
if (message) _sendMessageToRemoved(group, member, message);
|
if (message) _sendMessageToRemoved(group, member, message);
|
||||||
|
|
||||||
await Q.all([
|
await Bluebird.all([
|
||||||
member.save(),
|
member.save(),
|
||||||
group.save(),
|
group.save(),
|
||||||
]);
|
]);
|
||||||
@@ -653,13 +653,13 @@ api.inviteToGroup = {
|
|||||||
|
|
||||||
if (uuids) {
|
if (uuids) {
|
||||||
let uuidInvites = uuids.map((uuid) => _inviteByUUID(uuid, group, user, req, res));
|
let uuidInvites = uuids.map((uuid) => _inviteByUUID(uuid, group, user, req, res));
|
||||||
let uuidResults = await Q.all(uuidInvites);
|
let uuidResults = await Bluebird.all(uuidInvites);
|
||||||
results.push(...uuidResults);
|
results.push(...uuidResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (emails) {
|
if (emails) {
|
||||||
let emailInvites = emails.map((invite) => _inviteByEmail(invite, group, user, req, res));
|
let emailInvites = emails.map((invite) => _inviteByEmail(invite, group, user, req, res));
|
||||||
let emailResults = await Q.all(emailInvites);
|
let emailResults = await Bluebird.all(emailInvites);
|
||||||
results.push(...emailResults);
|
results.push(...emailResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
getUserInfo,
|
getUserInfo,
|
||||||
sendTxn as sendTxnEmail,
|
sendTxn as sendTxnEmail,
|
||||||
} from '../../libs/api-v3/email';
|
} from '../../libs/api-v3/email';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import sendPushNotification from '../../libs/api-v3/pushNotifications';
|
import sendPushNotification from '../../libs/api-v3/pushNotifications';
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
@@ -330,7 +330,7 @@ api.transferGems = {
|
|||||||
receiver.balance += amount;
|
receiver.balance += amount;
|
||||||
sender.balance -= amount;
|
sender.balance -= amount;
|
||||||
let promises = [receiver.save(), sender.save()];
|
let promises = [receiver.save(), sender.save()];
|
||||||
await Q.all(promises);
|
await Bluebird.all(promises);
|
||||||
|
|
||||||
let message = res.t('privateMessageGiftIntro', {
|
let message = res.t('privateMessageGiftIntro', {
|
||||||
receiverName: receiver.profile.name,
|
receiverName: receiver.profile.name,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { authWithHeaders } from '../../middlewares/api-v3/auth';
|
import { authWithHeaders } from '../../middlewares/api-v3/auth';
|
||||||
import analytics from '../../libs/api-v3/analyticsService';
|
import analytics from '../../libs/api-v3/analyticsService';
|
||||||
import {
|
import {
|
||||||
@@ -95,7 +95,7 @@ api.inviteToQuest = {
|
|||||||
await group.startQuest(user);
|
await group.startQuest(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
user.save(),
|
user.save(),
|
||||||
]);
|
]);
|
||||||
@@ -170,7 +170,7 @@ api.acceptQuest = {
|
|||||||
await group.startQuest(user);
|
await group.startQuest(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
user.save(),
|
user.save(),
|
||||||
]);
|
]);
|
||||||
@@ -229,7 +229,7 @@ api.rejectQuest = {
|
|||||||
await group.startQuest(user);
|
await group.startQuest(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
user.save(),
|
user.save(),
|
||||||
]);
|
]);
|
||||||
@@ -282,7 +282,7 @@ api.forceStart = {
|
|||||||
|
|
||||||
await group.startQuest(user);
|
await group.startQuest(user);
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
user.save(),
|
user.save(),
|
||||||
]);
|
]);
|
||||||
@@ -336,7 +336,7 @@ api.cancelQuest = {
|
|||||||
group.quest = Group.cleanGroupQuest();
|
group.quest = Group.cleanGroupQuest();
|
||||||
group.markModified('quest');
|
group.markModified('quest');
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
User.update(
|
User.update(
|
||||||
{'party._id': groupId},
|
{'party._id': groupId},
|
||||||
@@ -397,7 +397,7 @@ api.abortQuest = {
|
|||||||
group.quest = Group.cleanGroupQuest();
|
group.quest = Group.cleanGroupQuest();
|
||||||
group.markModified('quest');
|
group.markModified('quest');
|
||||||
|
|
||||||
let [groupSaved] = await Q.all([group.save(), memberUpdates, questLeaderUpdate]);
|
let [groupSaved] = await Bluebird.all([group.save(), memberUpdates, questLeaderUpdate]);
|
||||||
|
|
||||||
res.respond(200, groupSaved.quest);
|
res.respond(200, groupSaved.quest);
|
||||||
},
|
},
|
||||||
@@ -440,7 +440,7 @@ api.leaveQuest = {
|
|||||||
user.party.quest = Group.cleanQuestProgress();
|
user.party.quest = Group.cleanQuestProgress();
|
||||||
user.markModified('party.quest');
|
user.markModified('party.quest');
|
||||||
|
|
||||||
let [savedGroup] = await Q.all([
|
let [savedGroup] = await Bluebird.all([
|
||||||
group.save(),
|
group.save(),
|
||||||
user.save(),
|
user.save(),
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
BadRequest,
|
BadRequest,
|
||||||
} from '../../libs/api-v3/errors';
|
} from '../../libs/api-v3/errors';
|
||||||
import common from '../../../../common';
|
import common from '../../../../common';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import logger from '../../libs/api-v3/logger';
|
import logger from '../../libs/api-v3/logger';
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ async function _createTasks (req, res, user, challenge) {
|
|||||||
|
|
||||||
toSave.unshift((challenge || user).save());
|
toSave.unshift((challenge || user).save());
|
||||||
|
|
||||||
let tasks = await Q.all(toSave);
|
let tasks = await Bluebird.all(toSave);
|
||||||
tasks.splice(0, 1); // Remove user or challenge
|
tasks.splice(0, 1); // Remove user or challenge
|
||||||
return tasks;
|
return tasks;
|
||||||
}
|
}
|
||||||
@@ -393,7 +393,7 @@ api.scoreTask = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let results = await Q.all([
|
let results = await Bluebird.all([
|
||||||
user.save(),
|
user.save(),
|
||||||
task.save(),
|
task.save(),
|
||||||
]);
|
]);
|
||||||
@@ -789,7 +789,7 @@ api.unlinkTask = {
|
|||||||
} else { // remove
|
} else { // remove
|
||||||
if (task.type !== 'todo' || !task.completed) { // eslint-disable-line no-lonely-if
|
if (task.type !== 'todo' || !task.completed) { // eslint-disable-line no-lonely-if
|
||||||
removeFromArray(user.tasksOrder[`${task.type}s`], taskId);
|
removeFromArray(user.tasksOrder[`${task.type}s`], taskId);
|
||||||
await Q.all([user.save(), task.remove()]);
|
await Bluebird.all([user.save(), task.remove()]);
|
||||||
} else {
|
} else {
|
||||||
await task.remove();
|
await task.remove();
|
||||||
}
|
}
|
||||||
@@ -870,7 +870,7 @@ api.deleteTask = {
|
|||||||
|
|
||||||
if (task.type !== 'todo' || !task.completed) {
|
if (task.type !== 'todo' || !task.completed) {
|
||||||
removeFromArray((challenge || user).tasksOrder[`${task.type}s`], taskId);
|
removeFromArray((challenge || user).tasksOrder[`${task.type}s`], taskId);
|
||||||
await Q.all([(challenge || user).save(), task.remove()]);
|
await Bluebird.all([(challenge || user).save(), task.remove()]);
|
||||||
} else {
|
} else {
|
||||||
await task.remove();
|
await task.remove();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
model as Group,
|
model as Group,
|
||||||
} from '../../models/group';
|
} from '../../models/group';
|
||||||
import { model as User } from '../../models/user';
|
import { model as User } from '../../models/user';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import * as firebase from '../../libs/api-v3/firebase';
|
import * as firebase from '../../libs/api-v3/firebase';
|
||||||
import * as passwordUtils from '../../libs/api-v3/password';
|
import * as passwordUtils from '../../libs/api-v3/password';
|
||||||
@@ -218,7 +218,7 @@ api.deleteUser = {
|
|||||||
return group.leave(user, 'remove-all');
|
return group.leave(user, 'remove-all');
|
||||||
});
|
});
|
||||||
|
|
||||||
await Q.all(groupLeavePromises);
|
await Bluebird.all(groupLeavePromises);
|
||||||
|
|
||||||
await Tasks.Task.remove({
|
await Tasks.Task.remove({
|
||||||
userId: user._id,
|
userId: user._id,
|
||||||
@@ -351,7 +351,7 @@ api.castSpell = {
|
|||||||
|
|
||||||
spell.cast(user, task, req);
|
spell.cast(user, task, req);
|
||||||
if (user.isModified()) {
|
if (user.isModified()) {
|
||||||
await Q.all([
|
await Bluebird.all([
|
||||||
user.save(),
|
user.save(),
|
||||||
task.save(),
|
task.save(),
|
||||||
]);
|
]);
|
||||||
@@ -380,7 +380,7 @@ api.castSpell = {
|
|||||||
let isUserModified = user.isModified();
|
let isUserModified = user.isModified();
|
||||||
|
|
||||||
if (isUserModified) toSave.unshift(user.save());
|
if (isUserModified) toSave.unshift(user.save());
|
||||||
let saved = await Q.all(toSave);
|
let saved = await Bluebird.all(toSave);
|
||||||
|
|
||||||
let response = {
|
let response = {
|
||||||
tasks: isUserModified ? _.rest(saved) : saved,
|
tasks: isUserModified ? _.rest(saved) : saved,
|
||||||
@@ -400,7 +400,7 @@ api.castSpell = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
spell.cast(user, partyMembers, req);
|
spell.cast(user, partyMembers, req);
|
||||||
await Q.all(partyMembers.map(m => m.save()));
|
await Bluebird.all(partyMembers.map(m => m.save()));
|
||||||
} else {
|
} else {
|
||||||
if (!party && (!targetId || user._id === targetId)) {
|
if (!party && (!targetId || user._id === targetId)) {
|
||||||
partyMembers = user;
|
partyMembers = user;
|
||||||
@@ -413,7 +413,7 @@ api.castSpell = {
|
|||||||
if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
|
if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
|
||||||
spell.cast(user, partyMembers, req);
|
spell.cast(user, partyMembers, req);
|
||||||
if (user.isModified()) {
|
if (user.isModified()) {
|
||||||
await Q.all([
|
await Bluebird.all([
|
||||||
user.save(),
|
user.save(),
|
||||||
partyMembers.save(),
|
partyMembers.save(),
|
||||||
]);
|
]);
|
||||||
@@ -1105,7 +1105,7 @@ api.userRebirth = {
|
|||||||
|
|
||||||
await user.save();
|
await user.save();
|
||||||
|
|
||||||
await Q.all(tasks.map(task => task.save()));
|
await Bluebird.all(tasks.map(task => task.save()));
|
||||||
|
|
||||||
res.respond(200, ...rebirthRes);
|
res.respond(200, ...rebirthRes);
|
||||||
},
|
},
|
||||||
@@ -1201,7 +1201,7 @@ api.userReroll = {
|
|||||||
let promises = tasks.map(task => task.save());
|
let promises = tasks.map(task => task.save());
|
||||||
promises.push(user.save());
|
promises.push(user.save());
|
||||||
|
|
||||||
await Q.all(promises);
|
await Bluebird.all(promises);
|
||||||
|
|
||||||
res.respond(200, ...rerollRes);
|
res.respond(200, ...rerollRes);
|
||||||
},
|
},
|
||||||
@@ -1254,7 +1254,7 @@ api.userReset = {
|
|||||||
|
|
||||||
let resetRes = common.ops.reset(user, tasks);
|
let resetRes = common.ops.reset(user, tasks);
|
||||||
|
|
||||||
await Q.all([Tasks.Task.remove({_id: {$in: resetRes[0].tasksToRemove}, userId: user._id}), user.save()]);
|
await Bluebird.all([Tasks.Task.remove({_id: {$in: resetRes[0].tasksToRemove}, userId: user._id}), user.save()]);
|
||||||
|
|
||||||
res.respond(200, ...resetRes);
|
res.respond(200, ...resetRes);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import Pageres from 'pageres';
|
|||||||
import AWS from 'aws-sdk';
|
import AWS from 'aws-sdk';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import got from 'got';
|
import got from 'got';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import locals from '../../middlewares/api-v3/locals';
|
import locals from '../../middlewares/api-v3/locals';
|
||||||
|
|
||||||
let S3 = new AWS.S3({
|
let S3 = new AWS.S3({
|
||||||
@@ -222,7 +222,16 @@ api.exportUserAvatarPng = {
|
|||||||
Body: stream,
|
Body: stream,
|
||||||
});
|
});
|
||||||
|
|
||||||
let s3res = await Q.ninvoke(s3upload, 'send');
|
let s3res = await new Bluebird((resolve, reject) => {
|
||||||
|
s3upload.send((err, s3uploadRes) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(s3uploadRes);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
res.redirect(s3res.Location);
|
res.redirect(s3res.Location);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import ipn from 'paypal-ipn';
|
|||||||
import paypal from 'paypal-rest-sdk';
|
import paypal from 'paypal-rest-sdk';
|
||||||
import shared from '../../../../../common';
|
import shared from '../../../../../common';
|
||||||
import cc from 'coupon-code';
|
import cc from 'coupon-code';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { model as Coupon } from '../../../models/coupon';
|
import { model as Coupon } from '../../../models/coupon';
|
||||||
import { model as User } from '../../../models/user';
|
import { model as User } from '../../../models/user';
|
||||||
import {
|
import {
|
||||||
@@ -36,14 +36,14 @@ paypal.configure({
|
|||||||
});
|
});
|
||||||
|
|
||||||
// TODO better handling of errors
|
// TODO better handling of errors
|
||||||
const paypalPaymentCreate = Q.nbind(paypal.payment.create, paypal.payment);
|
const paypalPaymentCreate = Bluebird.promisify(paypal.payment.create, {context: paypal.payment});
|
||||||
const paypalPaymentExecute = Q.nbind(paypal.payment.execute, paypal.payment);
|
const paypalPaymentExecute = Bluebird.promisify(paypal.payment.execute, {context: paypal.payment});
|
||||||
const paypalBillingAgreementCreate = Q.nbind(paypal.billingAgreement.create, paypal.billingAgreement);
|
const paypalBillingAgreementCreate = Bluebird.promisify(paypal.billingAgreement.create, {context: paypal.billingAgreement});
|
||||||
const paypalBillingAgreementExecute = Q.nbind(paypal.billingAgreement.execute, paypal.billingAgreement);
|
const paypalBillingAgreementExecute = Bluebird.promisify(paypal.billingAgreement.execute, {context: paypal.billingAgreement});
|
||||||
const paypalBillingAgreementGet = Q.nbind(paypal.billingAgreement.get, paypal.billingAgreement);
|
const paypalBillingAgreementGet = Bluebird.promisify(paypal.billingAgreement.get, {context: paypal.billingAgreement});
|
||||||
const paypalBillingAgreementCancel = Q.nbind(paypal.billingAgreement.cancel, paypal.billingAgreement);
|
const paypalBillingAgreementCancel = Bluebird.promisify(paypal.billingAgreement.cancel, {context: paypal.billingAgreement});
|
||||||
|
|
||||||
const ipnVerifyAsync = Q.nbind(ipn.verify, ipn);
|
const ipnVerifyAsync = Bluebird.promisify(ipn.verify, {context: ipn});
|
||||||
|
|
||||||
let api = {};
|
let api = {};
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ if (process.env.NODE_ENV !== 'production') {
|
|||||||
// The BabelJS polyfill is needed in production too
|
// The BabelJS polyfill is needed in production too
|
||||||
require('babel-polyfill');
|
require('babel-polyfill');
|
||||||
|
|
||||||
|
global.Promise = require('bluebird');
|
||||||
|
|
||||||
// Only do the minimal amount of work before forking just in case of a dyno restart
|
// Only do the minimal amount of work before forking just in case of a dyno restart
|
||||||
const cluster = require('cluster');
|
const cluster = require('cluster');
|
||||||
const nconf = require('nconf');
|
const nconf = require('nconf');
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import amazonPayments from 'amazon-payments';
|
import amazonPayments from 'amazon-payments';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import common from '../../../../common';
|
import common from '../../../../common';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import {
|
import {
|
||||||
BadRequest,
|
BadRequest,
|
||||||
} from './errors';
|
} from './errors';
|
||||||
@@ -19,14 +19,14 @@ let amzPayment = amazonPayments.connect({
|
|||||||
clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
|
clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'),
|
||||||
});
|
});
|
||||||
|
|
||||||
let getTokenInfo = Q.nbind(amzPayment.api.getTokenInfo, amzPayment.api);
|
let getTokenInfo = Bluebird.promisify(amzPayment.api.getTokenInfo, {context: amzPayment.api});
|
||||||
let createOrderReferenceId = Q.nbind(amzPayment.offAmazonPayments.createOrderReferenceForId, amzPayment.offAmazonPayments);
|
let createOrderReferenceId = Bluebird.promisify(amzPayment.offAmazonPayments.createOrderReferenceForId, {context: amzPayment.offAmazonPayments});
|
||||||
let setOrderReferenceDetails = Q.nbind(amzPayment.offAmazonPayments.setOrderReferenceDetails, amzPayment.offAmazonPayments);
|
let setOrderReferenceDetails = Bluebird.promisify(amzPayment.offAmazonPayments.setOrderReferenceDetails, {context: amzPayment.offAmazonPayments});
|
||||||
let confirmOrderReference = Q.nbind(amzPayment.offAmazonPayments.confirmOrderReference, amzPayment.offAmazonPayments);
|
let confirmOrderReference = Bluebird.promisify(amzPayment.offAmazonPayments.confirmOrderReference, {context: amzPayment.offAmazonPayments});
|
||||||
let closeOrderReference = Q.nbind(amzPayment.offAmazonPayments.closeOrderReference, amzPayment.offAmazonPayments);
|
let closeOrderReference = Bluebird.promisify(amzPayment.offAmazonPayments.closeOrderReference, {context: amzPayment.offAmazonPayments});
|
||||||
let setBillingAgreementDetails = Q.nbind(amzPayment.offAmazonPayments.setBillingAgreementDetails, amzPayment.offAmazonPayments);
|
let setBillingAgreementDetails = Bluebird.promisify(amzPayment.offAmazonPayments.setBillingAgreementDetails, {context: amzPayment.offAmazonPayments});
|
||||||
let confirmBillingAgreement = Q.nbind(amzPayment.offAmazonPayments.confirmBillingAgreement, amzPayment.offAmazonPayments);
|
let confirmBillingAgreement = Bluebird.promisify(amzPayment.offAmazonPayments.confirmBillingAgreement, {context: amzPayment.offAmazonPayments});
|
||||||
let closeBillingAgreement = Q.nbind(amzPayment.offAmazonPayments.closeBillingAgreement, amzPayment.offAmazonPayments);
|
let closeBillingAgreement = Bluebird.promisify(amzPayment.offAmazonPayments.closeBillingAgreement, {context: amzPayment.offAmazonPayments});
|
||||||
|
|
||||||
let authorizeOnBillingAgreement = (inputSet) => {
|
let authorizeOnBillingAgreement = (inputSet) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable camelcase */
|
/* eslint-disable camelcase */
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import Amplitude from 'amplitude';
|
import Amplitude from 'amplitude';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import googleAnalytics from 'universal-analytics';
|
import googleAnalytics from 'universal-analytics';
|
||||||
import {
|
import {
|
||||||
each,
|
each,
|
||||||
@@ -109,7 +109,7 @@ let _sendDataToAmplitude = (eventType, data) => {
|
|||||||
|
|
||||||
amplitudeData.event_type = eventType;
|
amplitudeData.event_type = eventType;
|
||||||
|
|
||||||
return Q.promise((resolve, reject) => {
|
return new Bluebird((resolve, reject) => {
|
||||||
amplitude.track(amplitudeData)
|
amplitude.track(amplitudeData)
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch(reject);
|
.catch(reject);
|
||||||
@@ -160,7 +160,7 @@ let _sendDataToGoogle = (eventType, data) => {
|
|||||||
eventData.ev = value;
|
eventData.ev = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Q.promise((resolve, reject) => {
|
return new Bluebird((resolve, reject) => {
|
||||||
ga.event(eventData, (err) => {
|
ga.event(eventData, (err) => {
|
||||||
if (err) return reject(err);
|
if (err) return reject(err);
|
||||||
resolve();
|
resolve();
|
||||||
@@ -174,7 +174,7 @@ let _sendPurchaseDataToAmplitude = (data) => {
|
|||||||
amplitudeData.event_type = 'purchase';
|
amplitudeData.event_type = 'purchase';
|
||||||
amplitudeData.revenue = data.purchaseValue;
|
amplitudeData.revenue = data.purchaseValue;
|
||||||
|
|
||||||
return Q.promise((resolve, reject) => {
|
return new Bluebird((resolve, reject) => {
|
||||||
amplitude.track(amplitudeData)
|
amplitude.track(amplitudeData)
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch(reject);
|
.catch(reject);
|
||||||
@@ -199,7 +199,7 @@ let _sendPurchaseDataToGoogle = (data) => {
|
|||||||
ev: price,
|
ev: price,
|
||||||
};
|
};
|
||||||
|
|
||||||
return Q.promise((resolve) => {
|
return new Bluebird((resolve) => {
|
||||||
ga.event(eventData).send();
|
ga.event(eventData).send();
|
||||||
|
|
||||||
ga.transaction(data.uuid, price)
|
ga.transaction(data.uuid, price)
|
||||||
@@ -211,14 +211,14 @@ let _sendPurchaseDataToGoogle = (data) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function track (eventType, data) {
|
function track (eventType, data) {
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
_sendDataToAmplitude(eventType, data),
|
_sendDataToAmplitude(eventType, data),
|
||||||
_sendDataToGoogle(eventType, data),
|
_sendDataToGoogle(eventType, data),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function trackPurchase (data) {
|
function trackPurchase (data) {
|
||||||
return Q.all([
|
return Bluebird.all([
|
||||||
_sendPurchaseDataToAmplitude(data),
|
_sendPurchaseDataToAmplitude(data),
|
||||||
_sendPurchaseDataToGoogle(data),
|
_sendPurchaseDataToGoogle(data),
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import csvStringify from 'csv-stringify';
|
import csvStringify from 'csv-stringify';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
module.exports = (input) => {
|
module.exports = (input) => {
|
||||||
return Q.promise((resolve, reject) => {
|
return new Bluebird((resolve, reject) => {
|
||||||
csvStringify(input, (err, output) => {
|
csvStringify(input, (err, output) => {
|
||||||
if (err) return reject(err);
|
if (err) return reject(err);
|
||||||
return resolve(output);
|
return resolve(output);
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import nconf from 'nconf';
|
|||||||
import logger from './logger';
|
import logger from './logger';
|
||||||
import autoinc from 'mongoose-id-autoinc';
|
import autoinc from 'mongoose-id-autoinc';
|
||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
const IS_PROD = nconf.get('IS_PROD');
|
const IS_PROD = nconf.get('IS_PROD');
|
||||||
|
|
||||||
// Use Q promises instead of mpromise in mongoose
|
// Use Q promises instead of mpromise in mongoose
|
||||||
mongoose.Promise = Q.Promise;
|
mongoose.Promise = Bluebird;
|
||||||
|
|
||||||
let mongooseOptions = !IS_PROD ? {} : {
|
let mongooseOptions = !IS_PROD ? {} : {
|
||||||
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
|
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import _ from 'lodash';
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import common from '../../../../common';
|
import common from '../../../../common';
|
||||||
import * as Tasks from '../../models/task';
|
import * as Tasks from '../../models/task';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { model as Group } from '../../models/group';
|
import { model as Group } from '../../models/group';
|
||||||
import { model as User } from '../../models/user';
|
import { model as User } from '../../models/user';
|
||||||
import { cron } from '../../libs/api-v3/cron';
|
import { cron } from '../../libs/api-v3/cron';
|
||||||
@@ -139,7 +139,7 @@ module.exports = function cronMiddleware (req, res, next) {
|
|||||||
toSave.push(task.save());
|
toSave.push(task.save());
|
||||||
});
|
});
|
||||||
|
|
||||||
Q.all(toSave)
|
Bluebird.all(toSave)
|
||||||
.then(saved => {
|
.then(saved => {
|
||||||
user = res.locals.user = saved[0];
|
user = res.locals.user = saved[0];
|
||||||
if (!quest) return;
|
if (!quest) return;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import mongoose from 'mongoose';
|
import mongoose from 'mongoose';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import validator from 'validator';
|
import validator from 'validator';
|
||||||
import baseModel from '../libs/api-v3/baseModel';
|
import baseModel from '../libs/api-v3/baseModel';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
@@ -105,7 +105,7 @@ schema.methods.syncToUser = async function syncChallengeToUser (user) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let [challengeTasks, userTasks] = await Q.all([
|
let [challengeTasks, userTasks] = await Bluebird.all([
|
||||||
// Find original challenge tasks
|
// Find original challenge tasks
|
||||||
Tasks.Task.find({
|
Tasks.Task.find({
|
||||||
userId: {$exists: false},
|
userId: {$exists: false},
|
||||||
@@ -149,7 +149,7 @@ schema.methods.syncToUser = async function syncChallengeToUser (user) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
toSave.push(user.save());
|
toSave.push(user.save());
|
||||||
return Q.all(toSave);
|
return Bluebird.all(toSave);
|
||||||
};
|
};
|
||||||
|
|
||||||
async function _fetchMembersIds (challengeId) {
|
async function _fetchMembersIds (challengeId) {
|
||||||
@@ -189,7 +189,7 @@ schema.methods.addTasks = async function challengeAddTasks (tasks) {
|
|||||||
|
|
||||||
// Update the user
|
// Update the user
|
||||||
toSave.unshift(User.update({_id: memberId}, updateTasksOrderQ).exec());
|
toSave.unshift(User.update({_id: memberId}, updateTasksOrderQ).exec());
|
||||||
await Q.all(toSave); // eslint-disable-line babel/no-await-in-loop
|
await Bluebird.all(toSave); // eslint-disable-line babel/no-await-in-loop
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ schema.methods.unlinkTasks = async function challengeUnlinkTasks (user, keep) {
|
|||||||
});
|
});
|
||||||
user.markModified('tasksOrder');
|
user.markModified('tasksOrder');
|
||||||
taskPromises.push(user.save());
|
taskPromises.push(user.save());
|
||||||
return Q.all(taskPromises);
|
return Bluebird.all(taskPromises);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -314,7 +314,7 @@ schema.methods.closeChal = async function closeChal (broken = {}) {
|
|||||||
}, {multi: true}).exec(),
|
}, {multi: true}).exec(),
|
||||||
];
|
];
|
||||||
|
|
||||||
Q.all(backgroundTasks);
|
Bluebird.all(backgroundTasks);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Methods to adapt the new schema to API v2 responses (mostly tasks inside the challenge model)
|
// Methods to adapt the new schema to API v2 responses (mostly tasks inside the challenge model)
|
||||||
@@ -406,7 +406,7 @@ schema.methods.getTransformedData = function getTransformedData (options) {
|
|||||||
let membersQuery = User.find(queryMembers).select(selectDataMembers);
|
let membersQuery = User.find(queryMembers).select(selectDataMembers);
|
||||||
if (options.limitPopulation) membersQuery.limit(15);
|
if (options.limitPopulation) membersQuery.limit(15);
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
membersQuery.exec(),
|
membersQuery.exec(),
|
||||||
self.getTasks(),
|
self.getTasks(),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { InternalServerError } from '../libs/api-v3/errors';
|
|||||||
import * as firebase from '../libs/api-v2/firebase';
|
import * as firebase from '../libs/api-v2/firebase';
|
||||||
import baseModel from '../libs/api-v3/baseModel';
|
import baseModel from '../libs/api-v3/baseModel';
|
||||||
import { sendTxn as sendTxnEmail } from '../libs/api-v3/email';
|
import { sendTxn as sendTxnEmail } from '../libs/api-v3/email';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import nconf from 'nconf';
|
import nconf from 'nconf';
|
||||||
import sendPushNotification from '../libs/api-v3/pushNotifications';
|
import sendPushNotification from '../libs/api-v3/pushNotifications';
|
||||||
|
|
||||||
@@ -189,7 +189,7 @@ schema.statics.getGroups = async function getGroups (options = {}) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let groupsArray = _.reduce(await Q.all(queries), (previousValue, currentValue) => {
|
let groupsArray = _.reduce(await Bluebird.all(queries), (previousValue, currentValue) => {
|
||||||
if (_.isEmpty(currentValue)) return previousValue; // don't add anything to the results if the query returned null or an empty array
|
if (_.isEmpty(currentValue)) return previousValue; // don't add anything to the results if the query returned null or an empty array
|
||||||
return previousValue.concat(Array.isArray(currentValue) ? currentValue : [currentValue]); // otherwise concat the new results to the previousValue
|
return previousValue.concat(Array.isArray(currentValue) ? currentValue : [currentValue]); // otherwise concat the new results to the previousValue
|
||||||
}, []);
|
}, []);
|
||||||
@@ -228,7 +228,7 @@ schema.methods.removeGroupInvitations = async function removeGroupInvitations ()
|
|||||||
return user.save();
|
return user.save();
|
||||||
});
|
});
|
||||||
|
|
||||||
return Q.all(userUpdates);
|
return Bluebird.all(userUpdates);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Return true if user is a member of the group
|
// Return true if user is a member of the group
|
||||||
@@ -638,7 +638,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all') {
|
|||||||
let challengesToRemoveUserFrom = challenges.map(chal => {
|
let challengesToRemoveUserFrom = challenges.map(chal => {
|
||||||
return chal.unlinkTasks(user, keep);
|
return chal.unlinkTasks(user, keep);
|
||||||
});
|
});
|
||||||
await Q.all(challengesToRemoveUserFrom);
|
await Bluebird.all(challengesToRemoveUserFrom);
|
||||||
|
|
||||||
let promises = [];
|
let promises = [];
|
||||||
|
|
||||||
@@ -670,7 +670,7 @@ schema.methods.leave = async function leaveGroup (user, keep = 'keep-all') {
|
|||||||
|
|
||||||
firebase.removeUserFromGroup(group._id, user._id);
|
firebase.removeUserFromGroup(group._id, user._id);
|
||||||
|
|
||||||
return Q.all(promises);
|
return Bluebird.all(promises);
|
||||||
};
|
};
|
||||||
|
|
||||||
// API v2 compatibility methods
|
// API v2 compatibility methods
|
||||||
@@ -714,7 +714,7 @@ schema.methods.getTransformedData = function getTransformedData (options) {
|
|||||||
let membersQuery = User.find(queryMembers).select(selectDataMembers);
|
let membersQuery = User.find(queryMembers).select(selectDataMembers);
|
||||||
if (options.limitPopulation) membersQuery.limit(15);
|
if (options.limitPopulation) membersQuery.limit(15);
|
||||||
|
|
||||||
Q.all([
|
Bluebird.all([
|
||||||
membersQuery.exec(),
|
membersQuery.exec(),
|
||||||
User.find(queryInvites).select(populateInvites).exec(),
|
User.find(queryInvites).select(populateInvites).exec(),
|
||||||
Challenge.find({group: obj._id}).select(populateMembers).exec(),
|
Challenge.find({group: obj._id}).select(populateMembers).exec(),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import _ from 'lodash';
|
|||||||
import validator from 'validator';
|
import validator from 'validator';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import * as Tasks from './task';
|
import * as Tasks from './task';
|
||||||
import Q from 'q';
|
import Bluebird from 'bluebird';
|
||||||
import { schema as TagSchema } from './tag';
|
import { schema as TagSchema } from './tag';
|
||||||
import baseModel from '../libs/api-v3/baseModel';
|
import baseModel from '../libs/api-v3/baseModel';
|
||||||
import {
|
import {
|
||||||
@@ -593,7 +593,7 @@ function _populateDefaultTasks (user, taskTypes) {
|
|||||||
tasksToCreate.push(...tasksOfType);
|
tasksToCreate.push(...tasksOfType);
|
||||||
});
|
});
|
||||||
|
|
||||||
return Q.all(tasksToCreate)
|
return Bluebird.all(tasksToCreate)
|
||||||
.then((tasksCreated) => {
|
.then((tasksCreated) => {
|
||||||
_.each(tasksCreated, (task) => {
|
_.each(tasksCreated, (task) => {
|
||||||
user.tasksOrder[`${task.type}s`].push(task._id);
|
user.tasksOrder[`${task.type}s`].push(task._id);
|
||||||
@@ -720,7 +720,7 @@ schema.methods.sendMessage = async function sendMessage (userToReceiveMessage, m
|
|||||||
sender.markModified('inbox.messages');
|
sender.markModified('inbox.messages');
|
||||||
|
|
||||||
let promises = [userToReceiveMessage.save(), sender.save()];
|
let promises = [userToReceiveMessage.save(), sender.save()];
|
||||||
await Q.all(promises);
|
await Bluebird.all(promises);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Methods to adapt the new schema to API v2 responses (mostly tasks inside the user model)
|
// Methods to adapt the new schema to API v2 responses (mostly tasks inside the user model)
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ import logger from './libs/api-v3/logger';
|
|||||||
import express from 'express';
|
import express from 'express';
|
||||||
import http from 'http';
|
import http from 'http';
|
||||||
import attachMiddlewares from './middlewares/api-v3/index';
|
import attachMiddlewares from './middlewares/api-v3/index';
|
||||||
|
import Bluebird from 'bluebird';
|
||||||
|
|
||||||
|
global.Promise = Bluebird;
|
||||||
|
|
||||||
const server = http.createServer();
|
const server = http.createServer();
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|||||||
Reference in New Issue
Block a user