allows players to send gems to each other; other minor related changes - fixes https://github.com/HabitRPG/habitrpg/issues/7227

This commit is contained in:
Alys
2016-05-14 05:58:40 -04:00
parent 4dd7c29baf
commit 2e078f4776
5 changed files with 11 additions and 8 deletions

View File

@@ -124,13 +124,14 @@
"invalidTypeEquip": "\"type\" must be one of 'equipped', 'pet', 'mount', 'costume'.", "invalidTypeEquip": "\"type\" must be one of 'equipped', 'pet', 'mount', 'costume'.",
"cannotDeleteActiveAccount": "You have an active subscription, cancel your plan before deleting your account.", "cannotDeleteActiveAccount": "You have an active subscription, cancel your plan before deleting your account.",
"messageRequired": "A message is required.", "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.", "notAuthorizedToSendMessageToThisUser": "Can't send message to this user.",
"privateMessageGiftIntro": "Hello <%= receiverName %>, <%= senderName %> has sent you ", "privateMessageGiftIntro": "Hello <%= receiverName %>, <%= senderName %> has sent you ",
"privateMessageGiftGemsMessage": "<%= gemAmount %> gems! ", "privateMessageGiftGemsMessage": "<%= gemAmount %> gems! ",
"privateMessageGiftSubscriptionMessage": "<%= numberOfMonths %> months of subscription! ", "privateMessageGiftSubscriptionMessage": "<%= numberOfMonths %> months of subscription! ",
"cannotSendGemsToYourself": "Cannot send gems to yourself. Try a subscription instead.", "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 %>.", "mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
"typeRequired": "Type is required", "typeRequired": "Type is required",
"keyRequired": "Key is required", "keyRequired": "Key is required",

View File

@@ -79,7 +79,7 @@ describe('POST /members/transfer-gems', () => {
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t('notEnoughGemsToSend'), message: t('badAmountOfGemsToSend'),
}); });
}); });
@@ -92,7 +92,7 @@ describe('POST /members/transfer-gems', () => {
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t('notEnoughGemsToSend'), message: t('badAmountOfGemsToSend'),
}); });
}); });
@@ -105,7 +105,7 @@ describe('POST /members/transfer-gems', () => {
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t('notEnoughGemsToSend'), message: t('badAmountOfGemsToSend'),
}); });
}); });

View File

@@ -39,7 +39,7 @@ habitrpg
}; };
$scope.sendGift = function (uuid, gift) { $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) { .then(function (response) {
Notification.text('Gift sent!') Notification.text('Gift sent!')
$rootScope.User.sync(); $rootScope.User.sync();

View File

@@ -63,7 +63,7 @@ angular.module('habitrpg')
function transferGems (message, toUserId, gemAmount) { function transferGems (message, toUserId, gemAmount) {
return $http({ return $http({
method: 'POST', method: 'POST',
url: apiV3Prefix + '/members/send-private-message', url: apiV3Prefix + '/members/transfer-gems',
data: { data: {
message: message, message: message,
toUserId: toUserId, toUserId: toUserId,

View File

@@ -297,6 +297,7 @@ api.sendPrivateMessage = {
* *
* @apiParam {String} message Body parameter The message * @apiParam {String} message Body parameter The message
* @apiParam {UUID} toUserId Body parameter The toUser _id * @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 * @apiSuccess {Object} data An empty Object
*/ */
@@ -307,6 +308,7 @@ api.transferGems = {
async handler (req, res) { async handler (req, res) {
req.checkBody('message', res.t('messageRequired')).notEmpty(); req.checkBody('message', res.t('messageRequired')).notEmpty();
req.checkBody('toUserId', res.t('toUserIDRequired')).notEmpty().isUUID(); req.checkBody('toUserId', res.t('toUserIDRequired')).notEmpty().isUUID();
req.checkBody('gemAmount', res.t('gemAmountRequired')).notEmpty().isInt();
let validationErrors = req.validationErrors(); let validationErrors = req.validationErrors();
if (validationErrors) throw validationErrors; if (validationErrors) throw validationErrors;
@@ -324,7 +326,7 @@ api.transferGems = {
let amount = gemAmount / 4; let amount = gemAmount / 4;
if (!amount || amount <= 0 || sender.balance < amount) { if (!amount || amount <= 0 || sender.balance < amount) {
throw new NotAuthorized(res.t('notEnoughGemsToSend')); throw new NotAuthorized(res.t('badAmountOfGemsToSend'));
} }
receiver.balance += amount; receiver.balance += amount;