mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +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.official).to.eql(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('insufficientGemsForTavernChallenge', function() {
|
||||
context('tavern challenge', function() {
|
||||
it('sets isTavernChallengeAndUserCannotProvidePrize to false if user has no gems');
|
||||
it('sets isTavernChallengeAndUserCannotProvidePrize to true if user has at least one gem');
|
||||
it('returns true if user has no gems', function() {
|
||||
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() {
|
||||
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',
|
||||
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);
|
||||
_checkIfUserHasEnoughGemsForTavernChallenge();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -282,7 +279,6 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
|
||||
$scope.$watch('newChallenge.group', function(gid){
|
||||
if (!gid) return;
|
||||
|
||||
_checkIfUserHasEnoughGemsForTavernChallenge();
|
||||
_calculateMaxPrize(gid);
|
||||
|
||||
if (gid == 'habitrpg') {
|
||||
@@ -306,14 +302,14 @@ habitrpg.controller("ChallengesCtrl", ['$rootScope','$scope', 'Shared', 'User',
|
||||
return true;
|
||||
};
|
||||
|
||||
function _checkIfUserHasEnoughGemsForTavernChallenge() {
|
||||
$scope.insufficientGemsForTavernChallenge = function() {
|
||||
var balance = User.user.balance || 0;
|
||||
var isForTavern = $scope.newChallenge.group == 'habitrpg';
|
||||
|
||||
if (isForTavern && balance <= 0) {
|
||||
$scope.isTavernChallengeAndUserCannotProvidePrize = false;
|
||||
if (isForTavern) {
|
||||
return balance <= 0;
|
||||
} 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)')
|
||||
div
|
||||
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'))
|
||||
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',
|
||||
ng-click='openModal("buyGems",{track:"Gems > Toolbar"})')
|
||||
=env.t('challengeNotEnoughGems')
|
||||
.alert.alert-warning(ng-if='insufficientGemsForTavernChallenge()',
|
||||
ng-click='openModal("buyGems",{track:"Gems > Toolbar"})')
|
||||
=env.t('challengeNotEnoughGems')
|
||||
|
||||
.challenge-options(ng-show='newChallenge.group')
|
||||
.form-group
|
||||
input.form-control(type='text', ng-model='newChallenge.name',
|
||||
placeholder=env.t('challengeTitle'), required='required',
|
||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
||||
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||
|
||||
.form-group
|
||||
input.form-control(type='text', minlength="3", maxlength="16",
|
||||
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',
|
||||
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
|
||||
textarea.form-control(cols='3', placeholder=env.t('challengeDescr'), ng-model='newChallenge.description'
|
||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize')
|
||||
ng-disabled='insufficientGemsForTavernChallenge()')
|
||||
|
||||
.form-group
|
||||
.input-group
|
||||
span.input-group-addon
|
||||
.Pet_Currency_Gem1x
|
||||
input.form-control(type='number', placeholder=env.t('prize'),
|
||||
ng-disabled='!isTavernChallengeAndUserCannotProvidePrize'
|
||||
ng-disabled='insufficientGemsForTavernChallenge()'
|
||||
min="{{newChallenge.group=='habitrpg' ? 1 : 0}}",
|
||||
max="{{maxPrize}}", ng-model='newChallenge.prize')
|
||||
a.hint(popover="{{newChallenge.group=='habitrpg' ? env.t('prizePopTavern') : env.t('prizePop')}}",
|
||||
|
||||
Reference in New Issue
Block a user