diff --git a/common/locales/en/api-v3.json b/common/locales/en/api-v3.json index 3832ba83cf..1f943e53f4 100644 --- a/common/locales/en/api-v3.json +++ b/common/locales/en/api-v3.json @@ -124,13 +124,14 @@ "invalidTypeEquip": "\"type\" must be one of 'equipped', 'pet', 'mount', 'costume'.", "cannotDeleteActiveAccount": "You have an active subscription, cancel your plan before deleting your account.", "messageRequired": "A message is required.", - "toUserIDRequired": "A toUserId is required", + "toUserIDRequired": "A User ID is required", + "gemAmountRequired": "A number of gems is required", "notAuthorizedToSendMessageToThisUser": "Can't send message to this user.", "privateMessageGiftIntro": "Hello <%= receiverName %>, <%= senderName %> has sent you ", "privateMessageGiftGemsMessage": "<%= gemAmount %> gems! ", "privateMessageGiftSubscriptionMessage": "<%= numberOfMonths %> months of subscription! ", "cannotSendGemsToYourself": "Cannot send gems to yourself. Try a subscription instead.", - "notEnoughGemsToSend": "Amount must be within 0 and your current number of gems.", + "badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.", "mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.", "typeRequired": "Type is required", "keyRequired": "Key is required", diff --git a/test/api/v3/integration/members/POST-transfer_gems.test.js b/test/api/v3/integration/members/POST-transfer_gems.test.js index 384b78baf4..d5899ae33c 100644 --- a/test/api/v3/integration/members/POST-transfer_gems.test.js +++ b/test/api/v3/integration/members/POST-transfer_gems.test.js @@ -79,7 +79,7 @@ describe('POST /members/transfer-gems', () => { })).to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('notEnoughGemsToSend'), + message: t('badAmountOfGemsToSend'), }); }); @@ -92,7 +92,7 @@ describe('POST /members/transfer-gems', () => { })).to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('notEnoughGemsToSend'), + message: t('badAmountOfGemsToSend'), }); }); @@ -105,7 +105,7 @@ describe('POST /members/transfer-gems', () => { })).to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('notEnoughGemsToSend'), + message: t('badAmountOfGemsToSend'), }); }); diff --git a/website/client/js/controllers/memberModalCtrl.js b/website/client/js/controllers/memberModalCtrl.js index ed501a5574..b5d75cc8ad 100644 --- a/website/client/js/controllers/memberModalCtrl.js +++ b/website/client/js/controllers/memberModalCtrl.js @@ -39,7 +39,7 @@ habitrpg }; $scope.sendGift = function (uuid, gift) { - Members.transferGems(message, uuid, $scope.gift.gems.amount) + Members.transferGems($scope.gift.message, uuid, $scope.gift.gems.amount) .then(function (response) { Notification.text('Gift sent!') $rootScope.User.sync(); diff --git a/website/client/js/services/memberServices.js b/website/client/js/services/memberServices.js index a5d9d4eb83..039743cea5 100644 --- a/website/client/js/services/memberServices.js +++ b/website/client/js/services/memberServices.js @@ -63,7 +63,7 @@ angular.module('habitrpg') function transferGems (message, toUserId, gemAmount) { return $http({ method: 'POST', - url: apiV3Prefix + '/members/send-private-message', + url: apiV3Prefix + '/members/transfer-gems', data: { message: message, toUserId: toUserId, diff --git a/website/server/controllers/api-v3/members.js b/website/server/controllers/api-v3/members.js index e1bc0bf60a..d535c49716 100644 --- a/website/server/controllers/api-v3/members.js +++ b/website/server/controllers/api-v3/members.js @@ -297,6 +297,7 @@ api.sendPrivateMessage = { * * @apiParam {String} message Body parameter The message * @apiParam {UUID} toUserId Body parameter The toUser _id + * @apiParam {Integer} gemAmount Body parameter The number of gems to send * * @apiSuccess {Object} data An empty Object */ @@ -307,6 +308,7 @@ api.transferGems = { async handler (req, res) { req.checkBody('message', res.t('messageRequired')).notEmpty(); req.checkBody('toUserId', res.t('toUserIDRequired')).notEmpty().isUUID(); + req.checkBody('gemAmount', res.t('gemAmountRequired')).notEmpty().isInt(); let validationErrors = req.validationErrors(); if (validationErrors) throw validationErrors; @@ -324,7 +326,7 @@ api.transferGems = { let amount = gemAmount / 4; if (!amount || amount <= 0 || sender.balance < amount) { - throw new NotAuthorized(res.t('notEnoughGemsToSend')); + throw new NotAuthorized(res.t('badAmountOfGemsToSend')); } receiver.balance += amount;