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