diff --git a/website/common/locales/en/settings.json b/website/common/locales/en/settings.json index eeca1cd565..3f8a2371bc 100644 --- a/website/common/locales/en/settings.json +++ b/website/common/locales/en/settings.json @@ -213,5 +213,6 @@ "transaction_release_mounts": "Released mounts", "transaction_reroll": "Used Fortify Potion", "transaction_subscription_perks": "From subscription perk", - "transaction_admin_update_balance": "Admin given" + "transaction_admin_update_balance": "Admin given", + "transaction_admin_update_hourglasses": "Admin updated" } diff --git a/website/server/controllers/api-v3/hall.js b/website/server/controllers/api-v3/hall.js index 6473f30ab0..15183c686f 100644 --- a/website/server/controllers/api-v3/hall.js +++ b/website/server/controllers/api-v3/hall.js @@ -279,6 +279,11 @@ api.updateHero = { } if (updateData.purchased.plan.consecutive) { if (updateData.purchased.plan.consecutive.trinkets) { + await hero.updateHourglasses( + updateData.purchased.plan.consecutive.trinkets + - hero.purchased.plan.consecutive.trinkets, + 'admin_update_hourglasses', '', 'Updated by Habitica staff', + ); hero.purchased.plan.consecutive.trinkets = updateData.purchased.plan.consecutive.trinkets; } if (updateData.purchased.plan.consecutive.gemCapExtra) { diff --git a/website/server/models/transaction.js b/website/server/models/transaction.js index 56687f86c9..88a3ca8550 100644 --- a/website/server/models/transaction.js +++ b/website/server/models/transaction.js @@ -5,7 +5,7 @@ import baseModel from '../libs/baseModel'; const { Schema } = mongoose; export const currencies = ['gems', 'hourglasses']; -export const transactionTypes = ['buy_money', 'buy_gold', 'spend', 'gift_send', 'gift_receive', 'debug', 'create_challenge', 'create_bank_challenge', 'create_guild', 'change_class', 'rebirth', 'release_pets', 'release_mounts', 'reroll', 'contribution', 'subscription_perks', 'admin_update_balance']; +export const transactionTypes = ['buy_money', 'buy_gold', 'spend', 'gift_send', 'gift_receive', 'debug', 'create_challenge', 'create_bank_challenge', 'create_guild', 'change_class', 'rebirth', 'release_pets', 'release_mounts', 'reroll', 'contribution', 'subscription_perks', 'admin_update_balance', 'admin_update_hourglasses']; export const schema = new Schema({ currency: { $type: String, enum: currencies, required: true }, diff --git a/website/server/models/user/methods.js b/website/server/models/user/methods.js index f339cff896..bb25eea9b5 100644 --- a/website/server/models/user/methods.js +++ b/website/server/models/user/methods.js @@ -577,3 +577,22 @@ schema.methods.updateBalance = async function updateBalance (amount, currentAmount: this.balance, }); }; + +schema.methods.updateHourglasses = async function updateHourglasses ( + amount, + transactionType, + reference, + referenceText, +) { + this.purchased.plan.consecutive.trinkets += amount; + + await Transaction.create({ + currency: 'hourglasses', + userId: this._id, + transactionType, + amount, + reference, + referenceText, + currentAmount: this.purchased.plan.consecutive.trinkets, + }); +};