mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
Rework gem adjustment so it actually makes sense
This commit is contained in:
@@ -471,14 +471,41 @@ describe('Challenges Controller', function() {
|
|||||||
expect(chal.timestamp).to.be.greaterThan(0);
|
expect(chal.timestamp).to.be.greaterThan(0);
|
||||||
expect(chal.official).to.eql(false);
|
expect(chal.official).to.eql(false);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('insufficientGemsForTavernChallenge', function() {
|
||||||
context('tavern challenge', function() {
|
context('tavern challenge', function() {
|
||||||
it('sets isTavernChallengeAndUserCannotProvidePrize to false if user has no gems');
|
it('returns true if user has no gems', function() {
|
||||||
it('sets isTavernChallengeAndUserCannotProvidePrize to true if user has at least one gem');
|
User.user.balance = 0;
|
||||||
|
scope.newChallenge = specHelper.newChallenge({
|
||||||
|
group: 'habitrpg'
|
||||||
|
});
|
||||||
|
|
||||||
|
var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge();
|
||||||
|
expect(cannotCreateTavernChallenge).to.eql(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns false if user has gems', function() {
|
||||||
|
User.user.balance = .25;
|
||||||
|
scope.newChallenge = specHelper.newChallenge({
|
||||||
|
group: 'habitrpg'
|
||||||
|
});
|
||||||
|
|
||||||
|
var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge();
|
||||||
|
expect(cannotCreateTavernChallenge).to.eql(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
context('non-tavern challenge', function() {
|
context('non-tavern challenge', function() {
|
||||||
it('sets isTavernChallengeAndUserCannotProvidePrize to false');
|
it('returns false', function() {
|
||||||
|
User.user.balance = 0;
|
||||||
|
scope.newChallenge = specHelper.newChallenge({
|
||||||
|
group: 'not-tavern'
|
||||||
|
});
|
||||||
|
|
||||||
|
var cannotCreateTavernChallenge = scope.insufficientGemsForTavernChallenge();
|
||||||
|
expect(cannotCreateTavernChallenge).to.eql(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', '$stateParams', 'Tasks',
|
habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', '$stateParams', 'Tasks',
|
||||||
function($rootScope, $scope, Shared, User, Challenges, Notification, $compile, Groups, $state, $stateParams, Tasks) {
|
function($rootScope, $scope, Shared, User, Challenges, Notification, $compile, Groups, $state, $stateParams, Tasks) {
|
||||||
|
|
||||||
@@ -68,7 +66,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
|
|||||||
});
|
});
|
||||||
|
|
||||||
_calculateMaxPrize(defaultGroup);
|
_calculateMaxPrize(defaultGroup);
|
||||||
_checkIfUserHasEnoughGemsForTavernChallenge();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -282,7 +279,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
|
|||||||
$scope.$watch('newChallenge.group', function(gid){
|
$scope.$watch('newChallenge.group', function(gid){
|
||||||
if (!gid) return;
|
if (!gid) return;
|
||||||
|
|
||||||
_checkIfUserHasEnoughGemsForTavernChallenge();
|
|
||||||
_calculateMaxPrize(gid);
|
_calculateMaxPrize(gid);
|
||||||
|
|
||||||
if (gid == 'habitrpg') {
|
if (gid == 'habitrpg') {
|
||||||
@@ -306,14 +302,14 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
function _checkIfUserHasEnoughGemsForTavernChallenge() {
|
$scope.insufficientGemsForTavernChallenge = function() {
|
||||||
var balance = User.user.balance || 0;
|
var balance = User.user.balance || 0;
|
||||||
var isForTavern = $scope.newChallenge.group == 'habitrpg';
|
var isForTavern = $scope.newChallenge.group == 'habitrpg';
|
||||||
|
|
||||||
if (isForTavern && balance <= 0) {
|
if (isForTavern) {
|
||||||
$scope.isTavernChallengeAndUserCannotProvidePrize = false;
|
return balance <= 0;
|
||||||
} else {
|
} else {
|
||||||
$scope.isTavernChallengeAndUserCannotProvidePrize = true;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,23 +118,23 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
|
|||||||
form(ng-submit='save(newChallenge)')
|
form(ng-submit='save(newChallenge)')
|
||||||
div
|
div
|
||||||
input.btn.btn-success(type='submit', value=env.t('save'),
|
input.btn.btn-success(type='submit', value=env.t('save'),
|
||||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||||
input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard'))
|
input.btn.btn-danger(type='button', ng-click='discard()', value=env.t('discard'))
|
||||||
select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups')
|
select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups')
|
||||||
.alert.alert-warning(ng-if='!isTavernChallengeAndUserCannotProvidePrize',
|
.alert.alert-warning(ng-if='insufficientGemsForTavernChallenge()',
|
||||||
ng-click='openModal("buyGems",{track:"Gems > Toolbar"})')
|
ng-click='openModal("buyGems",{track:"Gems > Toolbar"})')
|
||||||
=env.t('challengeNotEnoughGems')
|
=env.t('challengeNotEnoughGems')
|
||||||
|
|
||||||
.challenge-options(ng-show='newChallenge.group')
|
.challenge-options(ng-show='newChallenge.group')
|
||||||
.form-group
|
.form-group
|
||||||
input.form-control(type='text', ng-model='newChallenge.name',
|
input.form-control(type='text', ng-model='newChallenge.name',
|
||||||
placeholder=env.t('challengeTitle'), required='required',
|
placeholder=env.t('challengeTitle'), required='required',
|
||||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||||
|
|
||||||
.form-group
|
.form-group
|
||||||
input.form-control(type='text', minlength="3", maxlength="16",
|
input.form-control(type='text', minlength="3", maxlength="16",
|
||||||
ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required
|
ng-model='newChallenge.shortName', placeholder=env.t('challengeTag'), required
|
||||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||||
|
|
|
|
||||||
a.hint.vertical-20(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags',
|
a.hint.vertical-20(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags',
|
||||||
popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right')
|
popover=env.t('challengeTagPop'), popover-trigger='mouseenter', popover-placement='right')
|
||||||
@@ -142,14 +142,14 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
|
|||||||
|
|
||||||
.form-group
|
.form-group
|
||||||
textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description'
|
textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description'
|
||||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||||
|
|
||||||
.form-group
|
.form-group
|
||||||
.input-group
|
.input-group
|
||||||
span.input-group-addon
|
span.input-group-addon
|
||||||
.Pet_Currency_Gem1x
|
.Pet_Currency_Gem1x
|
||||||
input.form-control(type='number', placeholder=env.t('prize'),
|
input.form-control(type='number', placeholder=env.t('prize'),
|
||||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize'
|
ng-disabled='insufficientGemsForTavernChallenge()'
|
||||||
min="{{newChallenge.group=='habitrpg' ? 1 : 0}}",
|
min="{{newChallenge.group=='habitrpg' ? 1 : 0}}",
|
||||||
max="{{maxPrize}}", ng-model='newChallenge.prize')
|
max="{{maxPrize}}", ng-model='newChallenge.prize')
|
||||||
a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}",
|
a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}",
|
||||||
|
|||||||
Reference in New Issue
Block a user