mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-07-22 11:38:24 +00:00
[API v3] Fix calls to user.ops and deleting tags (#7204)
* v3: fixes calls to user.ops from views and deleting tags * v3: fix tests that use user._statsComputed
This commit is contained in:
parent
468a312357
commit
cc20812674
18 changed files with 78 additions and 24 deletions
|
|
@ -76,7 +76,11 @@ describe('Stats Service', function() {
|
|||
"armor" : "armor_warrior_1"
|
||||
};
|
||||
var user = {
|
||||
_statsComputed: { str: 50 },
|
||||
fns: {
|
||||
statsComputed: function () {
|
||||
return { str: 50 };
|
||||
},
|
||||
},
|
||||
stats: {
|
||||
lvl: 10,
|
||||
buffs: { str: 10 },
|
||||
|
|
@ -252,7 +256,8 @@ describe('Stats Service', function() {
|
|||
|
||||
describe('mpDisplay', function() {
|
||||
it('displays mp as "mp / totalMP"', function() {
|
||||
user._statsComputed = { maxMP: 100 };
|
||||
user.fns = {};
|
||||
user.fns.statsComputed = function () { return { maxMP: 100 } };
|
||||
user.stats.mp = 30;
|
||||
var mpDisplay = statCalc.mpDisplay(user);
|
||||
|
||||
|
|
@ -260,7 +265,8 @@ describe('Stats Service', function() {
|
|||
});
|
||||
|
||||
it('Rounds mp down when given a decimal', function() {
|
||||
user._statsComputed = { maxMP: 100 };
|
||||
user.fns = {};
|
||||
user.fns.statsComputed = function () { return { maxMP: 100 } };
|
||||
user.stats.mp = 30.99;
|
||||
var mpDisplay = statCalc.mpDisplay(user);
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
}
|
||||
|
||||
function classBonus(user, stat) {
|
||||
var computedStats = user._statsComputed;
|
||||
var computedStats = (user.fns && user.fns.statsComputed) ? user.fns.statsComputed() : null;
|
||||
|
||||
if(computedStats) {
|
||||
var bonus = computedStats[stat]
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
|
||||
function mpDisplay(user) {
|
||||
var remainingMP = Math.floor(user.stats.mp);
|
||||
var totalMP = user._statsComputed.maxMP;
|
||||
var totalMP = (user.fns && user.fns.statsComputed) ? user.fns.statsComputed().maxMP : null;
|
||||
var display = _formatOutOfTotalDisplay(remainingMP, totalMP);
|
||||
|
||||
return display;
|
||||
|
|
|
|||
|
|
@ -153,10 +153,22 @@ angular.module('habitrpg')
|
|||
callOpsFunctionAndRequest('allocate', 'allocate', "POST",'', data);
|
||||
},
|
||||
|
||||
allocateNow: function () {
|
||||
callOpsFunctionAndRequest('allocateNow', 'allocate-now', "POST");
|
||||
},
|
||||
|
||||
changeClass: function (data) {
|
||||
callOpsFunctionAndRequest('changeClass', 'change-class', "POST",'', data);
|
||||
},
|
||||
|
||||
disableClasses: function () {
|
||||
callOpsFunctionAndRequest('disableClasses', 'disable-classes', "POST");
|
||||
},
|
||||
|
||||
revive: function (data) {
|
||||
callOpsFunctionAndRequest('revive', 'revive', "POST");
|
||||
},
|
||||
|
||||
addTask: function (data) {
|
||||
user.ops.addTask(data);
|
||||
save();
|
||||
|
|
@ -187,6 +199,12 @@ angular.module('habitrpg')
|
|||
Tasks.deleteTask(data.params.id);
|
||||
},
|
||||
|
||||
clearCompleted: function () {
|
||||
user.ops.clearCompleted(user.todos);
|
||||
save();
|
||||
Tasks.clearCompletedTodos();
|
||||
},
|
||||
|
||||
addTag: function(data) {
|
||||
user.ops.addTag(data);
|
||||
save();
|
||||
|
|
@ -199,6 +217,12 @@ angular.module('habitrpg')
|
|||
Tags.updateTag(data.params.id, data.body);
|
||||
},
|
||||
|
||||
deleteTag: function(data) {
|
||||
user.ops.deleteTag(data);
|
||||
save();
|
||||
Tags.deleteTag(data.params.id);
|
||||
},
|
||||
|
||||
addTenGems: function () {
|
||||
$http({
|
||||
method: "POST",
|
||||
|
|
@ -228,10 +252,18 @@ angular.module('habitrpg')
|
|||
callOpsFunctionAndRequest('clearPMs', 'messages', "DELETE");
|
||||
},
|
||||
|
||||
deletePM: function (data) {
|
||||
callOpsFunctionAndRequest('deletePM', 'messages', "DELETE", data.params.id, data);
|
||||
},
|
||||
|
||||
buy: function (data) {
|
||||
callOpsFunctionAndRequest('buy', 'buy', "POST", data.params.key, data);
|
||||
},
|
||||
|
||||
buyQuest: function (data) {
|
||||
callOpsFunctionAndRequest('buyQuest', 'buy-quest', "POST", data.params.key, data);
|
||||
},
|
||||
|
||||
purchase: function (data) {
|
||||
var type = data.params.type;
|
||||
var key = data.params.key;
|
||||
|
|
@ -251,6 +283,18 @@ angular.module('habitrpg')
|
|||
})
|
||||
},
|
||||
|
||||
buyMysterySet: function (data) {
|
||||
callOpsFunctionAndRequest('buyMysterySet', 'buy-mystery-set', "POST", data.params.key, data);
|
||||
},
|
||||
|
||||
readCard: function (data) {
|
||||
callOpsFunctionAndRequest('readCard', 'read-card', "POST", data.params.cardType, data);
|
||||
},
|
||||
|
||||
openMysteryItem: function (data) {
|
||||
callOpsFunctionAndRequest('openMysteryItem', 'open-mystery-item', "POST");
|
||||
},
|
||||
|
||||
sell: function (data) {
|
||||
var type = data.params.type;
|
||||
var key = data.params.key;
|
||||
|
|
@ -334,6 +378,10 @@ angular.module('habitrpg')
|
|||
callOpsFunctionAndRequest('sleep', 'sleep', "POST");
|
||||
},
|
||||
|
||||
blockUser: function (data) {
|
||||
callOpsFunctionAndRequest('blockUser', 'block', "POST", data.params.uuid, data);
|
||||
},
|
||||
|
||||
online: function (status) {
|
||||
if (status===true) {
|
||||
settings.online = true;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
li.filters-edit(ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags', bindonce='user.tags')
|
||||
form.hrpg-input-group
|
||||
input(type='text', ng-model='tag.name', ui-keyup="{13: 'saveOrEdit()'}")
|
||||
button(type='button', ng-click='user.ops.deleteTag({params:{id:tag.id}})')
|
||||
button(type='button', ng-click='User.deleteTag({params:{id:tag.id}})')
|
||||
span.glyphicon.glyphicon-trash
|
||||
ul(ng-if='!_editing', hrpg-sort-tags)
|
||||
li.filters-tags(ng-class='{active: user.filters[tag.id], challenge: tag.challenge}', ng-repeat='tag in user.tags', bindonce='user.tags')
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
button.customize-option(class='inventory_present inventory_present_{{moment().format("MM")}}',
|
||||
popover=env.t('subscriberItemText'), popover-trigger='mouseenter',
|
||||
popover-placement='right', popover-append-to-body='true',
|
||||
ng-click="user.ops.openMysteryItem({})")
|
||||
ng-click="User.openMysteryItem({})")
|
||||
.badge.badge-info.stack-count {{user.purchased.plan.mysteryItems.length}}
|
||||
|
||||
div(ng-if='user.purchased.plan.consecutive.trinkets')
|
||||
|
|
@ -199,7 +199,7 @@
|
|||
button.customize-option(popover=env.t('subGemPop'), popover-title=env.t('subGemName'),
|
||||
popover-trigger='mouseenter', popover-placement='top',
|
||||
popover-append-to-body='true',
|
||||
ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})')
|
||||
ng-click='User.purchase({params:{type:"gems",key:"gem"}})')
|
||||
span.Pet_Currency_Gem.inline-gems
|
||||
.badge.badge-success.stack-count {{Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought}}
|
||||
p
|
||||
|
|
|
|||
|
|
@ -35,4 +35,4 @@
|
|||
popover='{{::item.notes()}}', popover-title='{{::item.text()}}',
|
||||
popover-trigger='mouseenter', popover-placement='right',
|
||||
popover-append-to-body='true',
|
||||
ng-click='user.ops.buyMysterySet({params:{key:set.key}})')
|
||||
ng-click='User.buyMysterySet({params:{key:set.key}})')
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ mixin profileStats
|
|||
input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})')
|
||||
span.hint(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop'))=env.t('taskAllocation')
|
||||
div(ng-show='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)')
|
||||
a.btn.btn-primary.btn-xs(ng-click='user.ops.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop'))
|
||||
a.btn.btn-primary.btn-xs(ng-click='User.allocateNow({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('distributePointsPop'))
|
||||
span.glyphicon.glyphicon-download
|
||||
|
|
||||
=env.t('distributePoints')
|
||||
|
|
@ -227,7 +227,7 @@ mixin profileStats
|
|||
|
||||
|
||||
div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "col-md-4" : "col-md-6"')
|
||||
button.btn.btn-default(ng-if='user.preferences.disableClasses', ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass')
|
||||
button.btn.btn-default(ng-if='user.preferences.disableClasses', ng-click='User.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass')
|
||||
hr(ng-if='user.preferences.disableClasses')
|
||||
include ../shared/profiles/achievements
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ script(type='text/ng-template', id='partials/options.settings.settings.html')
|
|||
|
||||
button.btn.btn-default(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showBaileyPop'))= env.t('showBailey')
|
||||
button.btn.btn-default(ng-click='openRestoreModal()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal')
|
||||
button.btn.btn-default(ng-if='user.preferences.disableClasses==true', ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass')
|
||||
button.btn.btn-default(ng-if='user.preferences.disableClasses==true', ng-click='User.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass')
|
||||
|
||||
hr
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ mixin chatMessages(inbox)
|
|||
a(ng-click="quickReply(message.uuid)")
|
||||
span.glyphicon.glyphicon-share-alt(tooltip=env.t('pm-reply'))
|
||||
span(ng-if='#{inbox ? "true" : ":: user.contributor.admin || message.uuid == user.id"}')
|
||||
a(ng-click='#{inbox? "user.ops.deletePM({params:{id:message.$key}})" : "deleteChatMessage(group, message)"}')
|
||||
a(ng-click='#{inbox? "User.deletePM({params:{id:message.$key}})" : "deleteChatMessage(group, message)"}')
|
||||
span.glyphicon.glyphicon-trash(tooltip=env.t('delete'))
|
||||
span(ng-if=':: user.contributor.admin || (!message.sent && user.flags.communityGuidelinesAccepted && message.uuid != user.id && message.uuid != "system")')
|
||||
a(ng-click="flagChatMessage(group._id, message)")
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@
|
|||
.meter-label(tooltip='Mana', ng-if='user.flags.classSelected && !user.preferences.disableClasses')
|
||||
span.glyphicon.glyphicon-fire
|
||||
.meter.mana(ng-if='user.flags.classSelected && !user.preferences.disableClasses', tooltip='{{Math.round(user.stats.mp * 100) / 100}}')
|
||||
.bar(ng-style='{"width": (user.stats.mp / user._statsComputed.maxMP * 100) + "%"}')
|
||||
.bar(ng-style='{"width": (user.stats.mp / user.fns.statsComputed().maxMP * 100) + "%"}')
|
||||
span.meter-text.value
|
||||
span
|
||||
| {{Math.floor(user.stats.mp)}} / {{user._statsComputed.maxMP}}
|
||||
| {{Math.floor(user.stats.mp)}} / {{user.fns.statsComputed().maxMP}}
|
||||
// party
|
||||
.party(ng-controller='PartyCtrl')
|
||||
button.party-invite.btn.btn-primary(ng-click="inviteOrStartParty(group)",
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ script(id='modals/buyGems.html', type='text/ng-template')
|
|||
.container-fluid
|
||||
.row
|
||||
.col-md-3
|
||||
button.customize-option(ng-click='user.ops.purchase({params:{type:"gems",key:"gem"}})')
|
||||
button.customize-option(ng-click='User.purchase({params:{type:"gems",key:"gem"}})')
|
||||
span.Pet_Currency_Gem.inline-gems
|
||||
.badge.badge-success.stack-count {{Shared.planGemLimits.convCap + User.user.purchased.plan.consecutive.gemCapExtra - User.user.purchased.plan.gemsBought}}
|
||||
p
|
||||
|
|
|
|||
|
|
@ -68,6 +68,6 @@ script(type='text/ng-template', id='modals/chooseClass.html')
|
|||
|
||||
.modal-footer
|
||||
span(popover-placement='left', popover-trigger='mouseenter', popover=env.t('optOutOfClassesText'))
|
||||
button.btn.btn-danger(ng-click='user.ops.disableClasses({}); $close()')=env.t('optOutOfClasses')
|
||||
button.btn.btn-danger(ng-click='User.disableClasses({}); $close()')=env.t('optOutOfClasses')
|
||||
button.btn.btn-primary(ng-disabled='!selectedClass' ng-click='changeClass(selectedClass); $close()')=env.t('select')
|
||||
.pull-left!=env.t('chooseClassLearn')
|
||||
|
|
|
|||
|
|
@ -21,5 +21,5 @@ script(type='text/ng-template', id='modals/death.html')
|
|||
h4(style='margin-top:1.5em')=env.t('dontDespair')
|
||||
p(style='margin-top:1.5em')=env.t('deathPenaltyDetails')
|
||||
.modal-footer
|
||||
a.btn.btn-danger.btn-lg.flex-column(ng-click='user.ops.revive({}); $close()')=env.t('refillHealthTryAgain')
|
||||
a.btn.btn-danger.btn-lg.flex-column(ng-click='User.revive(); $close()')=env.t('refillHealthTryAgain')
|
||||
h4.text-center!=env.t('dyingOftenTips')
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ script(id='modals/cards.html', type='text/ng-template')
|
|||
markdown(text='::cardMessage')
|
||||
.modal-footer
|
||||
small.pull-left {{::env.t(cardType + 'CardExplanation')}}
|
||||
button.btn.btn-default(ng-click='user.ops.readCard({params: {cardType: cardType}}); $close()')=env.t('ok')
|
||||
button.btn.btn-default(ng-click='User.readCard({params: {cardType: cardType}}); $close()')=env.t('ok')
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ script(type='text/ng-template', id='modals/member.html')
|
|||
include ../profiles/achievements
|
||||
.modal-footer
|
||||
.btn-group.pull-left(ng-if='::user')
|
||||
button.btn.btn-md.btn-default(ng-if='user.inbox.blocks | contains:profile._id', tooltip=env.t('unblock'), ng-click="user.ops.blockUser({params:{uuid:profile._id}})", tooltip-placement='right')
|
||||
button.btn.btn-md.btn-default(ng-if='user.inbox.blocks | contains:profile._id', tooltip=env.t('unblock'), ng-click="User.blockUser({params:{uuid:profile._id}})", tooltip-placement='right')
|
||||
span.glyphicon.glyphicon-plus
|
||||
button.btn.btn-md.btn-default(ng-if='profile._id != user._id && !profile.contributor.admin && !(user.inbox.blocks | contains:profile._id)', tooltip=env.t('block'), ng-click="user.ops.blockUser({params:{uuid:profile._id}})", tooltip-placement='right')
|
||||
button.btn.btn-md.btn-default(ng-if='profile._id != user._id && !profile.contributor.admin && !(user.inbox.blocks | contains:profile._id)', tooltip=env.t('block'), ng-click="User.blockUser({params:{uuid:profile._id}})", tooltip-placement='right')
|
||||
span.glyphicon.glyphicon-ban-circle
|
||||
button.btn.btn-md.btn-default(tooltip=env.t('sendPM'), ng-click="openModal('private-message',{controller:'MemberModalCtrl'})", tooltip-placement='right')
|
||||
span.glyphicon.glyphicon-envelope
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ script(type='text/ng-template', id='modals/buyQuest.html')
|
|||
.modal-footer
|
||||
button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('neverMind')
|
||||
button.btn.btn-primary(ng-if='::selectedQuest.category !== "gold"', ng-click='purchase("quests", quest); closeQuest(); $close()')=env.t('buyQuest') + ': {{::selectedQuest.value}} ' + env.t('gems')
|
||||
button.btn.btn-primary(ng-if='::selectedQuest.category === "gold"', ng-click='user.ops.buyQuest({params:{key:selectedQuest.key}}); closeQuest(); $close()')=env.t('buyQuest') + ': {{::selectedQuest.goldValue}} ' + env.t('gold')
|
||||
button.btn.btn-primary(ng-if='::selectedQuest.category === "gold"', ng-click='User.buyQuest({params:{key:selectedQuest.key}}); closeQuest(); $close()')=env.t('buyQuest') + ': {{::selectedQuest.goldValue}} ' + env.t('gold')
|
||||
|
||||
script(type='text/ng-template', id='modals/questInvitation.html')
|
||||
.modal-header
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ table.table.table-striped
|
|||
span.hint(popover-title=env.t(statInfo.title), popover-placement='right',
|
||||
popover=env.t(statInfo.popover), popover-trigger='mouseenter')
|
||||
strong=env.t(statInfo.title)
|
||||
strong : {{profile._statsComputed.#{stat}}}
|
||||
strong : {{profile.fns.statsComputed().#{stat}}}
|
||||
|
||||
td: ul.list-unstyled
|
||||
+statList('statCalc.levelBonus(profile.stats.lvl)', 'levelBonus', 'level', true)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ mixin taskColumnTabs(position)
|
|||
div(ng-show='list.view == "complete"')
|
||||
.alert
|
||||
=env.t('lotOfToDos')
|
||||
button.task-action-btn.tile.spacious.bright(ng-click='user.ops.clearCompleted({})',popover=env.t('deleteToDosExplanation'),popover-trigger='mouseenter')=env.t('clearCompleted')
|
||||
button.task-action-btn.tile.spacious.bright(ng-click='User.clearCompleted({})',popover=env.t('deleteToDosExplanation'),popover-trigger='mouseenter')=env.t('clearCompleted')
|
||||
// remaining/completed tabs
|
||||
ul.task-filter
|
||||
li(ng-class='{active: list.view == "remaining"}')
|
||||
|
|
|
|||
Loading…
Reference in a new issue