Bulk purchasing (#9196)
* Moved buy tests * Added mystery buy to buy.js * Added quest purchasing to buy * Added buy special * Moved integration tests to buy folder * Removed buyGear dependency * Removed buyArmoire dependency * Removed buyHealthPotion dependency * Removed myster, quest and special dependency * Replaced functions with factory * Added bulk purchasing to common * Added bulk purchasing to the api * Added bulk purchasing to client * Refactored purchasing function to reduce long method * Added bulk purchase to gem purchases * Added bulk purchasing to api * Added bulk purchasing to gem items on client * Removed bulk from equipment * Removed recentlyPurchased * Fixed style issues and prevented puchasing more gems than are left * Fixed lint * Fixed missing keys * Fixed gem amount notice * Added quest modal to pinned item * Added bulk purchase to gem modal * Fixed styles * Fixed bulk purchase for spells * Fixed modal size * Hid autofill
This commit is contained in:
@@ -874,11 +874,21 @@ api.buy = {
|
||||
let buyRes;
|
||||
let specialKeys = ['snowball', 'spookySparkles', 'shinySeed', 'seafoam'];
|
||||
|
||||
// @TODO: Remove this when mobile passes type in body
|
||||
let type = req.params.key;
|
||||
if (specialKeys.indexOf(req.params.key) !== -1) {
|
||||
buyRes = common.ops.buySpecialSpell(user, req);
|
||||
} else {
|
||||
buyRes = common.ops.buy(user, req, res.analytics);
|
||||
type = 'special';
|
||||
}
|
||||
req.type = type;
|
||||
|
||||
// @TODO: right now common follow express structure, but we should decouple the dependency
|
||||
if (req.body.type) req.type = req.body.type;
|
||||
|
||||
let quantity = 1;
|
||||
if (req.body.quantity) quantity = req.body.quantity;
|
||||
req.quantity = quantity;
|
||||
|
||||
buyRes = common.ops.buy(user, req, res.analytics);
|
||||
|
||||
await user.save();
|
||||
res.respond(200, ...buyRes);
|
||||
@@ -926,7 +936,7 @@ api.buyGear = {
|
||||
url: '/user/buy-gear/:key',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buyGearRes = common.ops.buyGear(user, req, res.analytics);
|
||||
let buyGearRes = common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...buyGearRes);
|
||||
},
|
||||
@@ -966,7 +976,9 @@ api.buyArmoire = {
|
||||
url: '/user/buy-armoire',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buyArmoireResponse = common.ops.buyArmoire(user, req, res.analytics);
|
||||
req.type = 'armoire';
|
||||
req.params.key = 'armoire';
|
||||
let buyArmoireResponse = common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...buyArmoireResponse);
|
||||
},
|
||||
@@ -1004,7 +1016,9 @@ api.buyHealthPotion = {
|
||||
url: '/user/buy-health-potion',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buyHealthPotionResponse = common.ops.buyHealthPotion(user, req, res.analytics);
|
||||
req.type = 'potion';
|
||||
req.params.key = 'potion';
|
||||
let buyHealthPotionResponse = common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...buyHealthPotionResponse);
|
||||
},
|
||||
@@ -1044,7 +1058,8 @@ api.buyMysterySet = {
|
||||
url: '/user/buy-mystery-set/:key',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buyMysterySetRes = common.ops.buyMysterySet(user, req, res.analytics);
|
||||
req.type = 'mystery';
|
||||
let buyMysterySetRes = common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...buyMysterySetRes);
|
||||
},
|
||||
@@ -1084,7 +1099,8 @@ api.buyQuest = {
|
||||
url: '/user/buy-quest/:key',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buyQuestRes = common.ops.buyQuest(user, req, res.analytics);
|
||||
req.type = 'quest';
|
||||
let buyQuestRes = common.ops.buy(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...buyQuestRes);
|
||||
},
|
||||
@@ -1123,7 +1139,8 @@ api.buySpecialSpell = {
|
||||
url: '/user/buy-special-spell/:key',
|
||||
async handler (req, res) {
|
||||
let user = res.locals.user;
|
||||
let buySpecialSpellRes = common.ops.buySpecialSpell(user, req);
|
||||
req.type = 'special';
|
||||
let buySpecialSpellRes = common.ops.buy(user, req);
|
||||
await user.save();
|
||||
res.respond(200, ...buySpecialSpellRes);
|
||||
},
|
||||
@@ -1337,6 +1354,11 @@ api.purchase = {
|
||||
if (!canGetGems) throw new NotAuthorized(res.t('groupPolicyCannotGetGems'));
|
||||
}
|
||||
|
||||
// Req is currently used as options. Slighly confusing, but this will solve that for now.
|
||||
let quantity = 1;
|
||||
if (req.body.quantity) quantity = req.body.quantity;
|
||||
req.quantity = quantity;
|
||||
|
||||
let purchaseRes = common.ops.purchaseWithSpell(user, req, res.analytics);
|
||||
await user.save();
|
||||
res.respond(200, ...purchaseRes);
|
||||
|
||||
Reference in New Issue
Block a user