mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
Api v3 party quest fixes (#7341)
* Fix display of add challenge message when group challenges are empty * Fixed forced quest start to update quest without reload * Fixed needing to reload when accepting party invite * Fix group leave and join reload * Fixed leave current party and join another * Updated party tests
This commit is contained in:
committed by
Matteo Pagliazzi
parent
7ac67315e6
commit
1a87619bac
@@ -423,7 +423,9 @@ describe("Party Controller", function() {
|
|||||||
describe('#leaveOldPartyAndJoinNewParty', function() {
|
describe('#leaveOldPartyAndJoinNewParty', function() {
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
sandbox.stub(scope, 'join');
|
sandbox.stub(scope, 'join');
|
||||||
sandbox.stub(groups.Group, 'leave').yields();
|
groups.data.party = { _id: 'old-party' };
|
||||||
|
var groupLeave = sandbox.stub(groups.Group, 'leave');
|
||||||
|
groupLeave.returns(Promise.resolve({}));
|
||||||
sandbox.stub(groups, 'party').returns({
|
sandbox.stub(groups, 'party').returns({
|
||||||
_id: 'old-party'
|
_id: 'old-party'
|
||||||
});
|
});
|
||||||
@@ -441,20 +443,17 @@ describe("Party Controller", function() {
|
|||||||
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
|
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
|
||||||
|
|
||||||
expect(groups.Group.leave).to.be.calledOnce;
|
expect(groups.Group.leave).to.be.calledOnce;
|
||||||
expect(groups.Group.leave).to.be.calledWith({
|
expect(groups.Group.leave).to.be.calledWith('old-party', false);
|
||||||
gid: 'old-party',
|
|
||||||
keep: false
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('joins the new party', function() {
|
it('joins the new party', function(done) {
|
||||||
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
|
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
expect(scope.join).to.be.calledOnce;
|
expect(scope.join).to.be.calledOnce;
|
||||||
expect(scope.join).to.be.calledWith({
|
expect(scope.join).to.be.calledWith({id: 'some-id', name: 'some-name'});
|
||||||
id: 'some-id',
|
done();
|
||||||
name: 'some-name'
|
}, 1000);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -57,12 +57,15 @@ habitrpg.controller("GuildsCtrl", ['$scope', 'Groups', 'User', 'Challenges', '$r
|
|||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
var joinedGroup = response.data.data;
|
var joinedGroup = response.data.data;
|
||||||
|
|
||||||
|
User.user.guilds.push(joinedGroup._id);
|
||||||
|
|
||||||
if (joinedGroup.privacy == 'public') {
|
if (joinedGroup.privacy == 'public') {
|
||||||
Analytics.track({'hitType':'event', 'eventCategory':'behavior', 'eventAction':'join group', 'owner':false, 'groupType':'guild','privacy': joinedGroup.privacy, 'groupName': joinedGroup.name})
|
Analytics.track({'hitType':'event', 'eventCategory':'behavior', 'eventAction':'join group', 'owner':false, 'groupType':'guild','privacy': joinedGroup.privacy, 'groupName': joinedGroup.name})
|
||||||
} else {
|
} else {
|
||||||
Analytics.track({'hitType':'event', 'eventCategory':'behavior', 'eventAction':'join group', 'owner':false, 'groupType':'guild','privacy': joinedGroup.privacy})
|
Analytics.track({'hitType':'event', 'eventCategory':'behavior', 'eventAction':'join group', 'owner':false, 'groupType':'guild','privacy': joinedGroup.privacy})
|
||||||
}
|
}
|
||||||
$rootScope.hardRedirect('/#/options/groups/guilds/' + joinedGroup._id);
|
|
||||||
|
$location.path('/options/groups/guilds/' + joinedGroup._id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +80,10 @@ habitrpg.controller("GuildsCtrl", ['$scope', 'Groups', 'User', 'Challenges', '$r
|
|||||||
} else {
|
} else {
|
||||||
Groups.Group.leave($scope.selectedGroup._id, keep)
|
Groups.Group.leave($scope.selectedGroup._id, keep)
|
||||||
.success(function (data) {
|
.success(function (data) {
|
||||||
$rootScope.hardRedirect('/#/options/groups/guilds');
|
var index = User.user.guilds.indexOf($scope.selectedGroup._id);
|
||||||
|
delete User.user.guilds[index];
|
||||||
|
$scope.selectedGroup = undefined;
|
||||||
|
$location.path('/options/groups/guilds');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
|
|||||||
$scope.join = function (party) {
|
$scope.join = function (party) {
|
||||||
Groups.Group.join(party.id)
|
Groups.Group.join(party.id)
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
|
$scope.group = response.data.data;
|
||||||
|
User.sync();
|
||||||
Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'join group','owner':false,'groupType':'party','privacy':'private'});
|
Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'join group','owner':false,'groupType':'party','privacy':'private'});
|
||||||
Analytics.updateUser({'partyID': party.id});
|
Analytics.updateUser({'partyID': party.id});
|
||||||
$rootScope.hardRedirect('/#/options/groups/party');
|
$rootScope.hardRedirect('/#/options/groups/party');
|
||||||
@@ -131,7 +133,8 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
|
|||||||
|
|
||||||
$scope.leaveOldPartyAndJoinNewParty = function(newPartyId, newPartyName) {
|
$scope.leaveOldPartyAndJoinNewParty = function(newPartyId, newPartyName) {
|
||||||
if (confirm('Are you sure you want to delete your party and join ' + newPartyName + '?')) {
|
if (confirm('Are you sure you want to delete your party and join ' + newPartyName + '?')) {
|
||||||
Groups.Group.leave({gid: Groups.party()._id, keep: false}, undefined, function() {
|
Groups.Group.leave(Groups.data.party._id, false)
|
||||||
|
.then(function() {
|
||||||
$scope.group = {
|
$scope.group = {
|
||||||
loadingNewParty: true
|
loadingNewParty: true
|
||||||
};
|
};
|
||||||
@@ -183,6 +186,7 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
|
|||||||
$scope.questForceStart = function(){
|
$scope.questForceStart = function(){
|
||||||
Quests.sendAction('quests/force-start')
|
Quests.sendAction('quests/force-start')
|
||||||
.then(function(quest) {
|
.then(function(quest) {
|
||||||
|
console.log(quest)
|
||||||
$scope.group.quest = quest;
|
$scope.group.quest = quest;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ angular.module('habitrpg')
|
|||||||
});
|
});
|
||||||
|
|
||||||
var quest = response.data.quest;
|
var quest = response.data.quest;
|
||||||
|
if (!quest) quest = response.data.data;
|
||||||
resolve(quest);
|
resolve(quest);
|
||||||
});;
|
});;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
td
|
td
|
||||||
a(ui-sref='options.social.challenges.detail({cid:challenge._id, groupIdFilter: group._id})')
|
a(ui-sref='options.social.challenges.detail({cid:challenge._id, groupIdFilter: group._id})')
|
||||||
markdown(text='challenge.name')
|
markdown(text='challenge.name')
|
||||||
div(ng-if='group.challenges.length == 0')
|
div(ng-if='!group.challenges || group.challenges.length == 0')
|
||||||
p
|
p
|
||||||
|
|
|
|
||||||
=env.t('noChallenges')
|
=env.t('noChallenges')
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
|||||||
h3.panel-title
|
h3.panel-title
|
||||||
span {{group.name}}
|
span {{group.name}}
|
||||||
span.group-leave-join(ng-if='group')
|
span.group-leave-join(ng-if='group')
|
||||||
a.btn.btn-sm.btn-danger.pull-right(ng-if=":: isMemberOfGroup(User.user._id, group)", ng-hide='group._editing', ng-click='clickLeave(group, $event)')
|
a.btn.btn-sm.btn-danger.pull-right(ng-if="isMemberOfGroup(User.user._id, group)", ng-hide='group._editing', ng-click='clickLeave(group, $event)')
|
||||||
span.glyphicon.glyphicon-ban-circle
|
span.glyphicon.glyphicon-ban-circle
|
||||||
=env.t('leave')
|
=env.t('leave')
|
||||||
a.btn.btn-success.pull-right(ng-if=':: !isMemberOfGroup(User.user._id, group)', ng-click='join(group)')=env.t('join')
|
a.btn.btn-success.pull-right(ng-if='!isMemberOfGroup(User.user._id, group)', ng-click='join(group)')=env.t('join')
|
||||||
span(ng-if='group.leader._id == user.id')
|
span(ng-if='group.leader._id == user.id')
|
||||||
button.btn.btn-sm.btn-primary.pull-right(ng-click='cancelEdit(group)', ng-hide='!group._editing')=env.t('cancel')
|
button.btn.btn-sm.btn-primary.pull-right(ng-click='cancelEdit(group)', ng-hide='!group._editing')=env.t('cancel')
|
||||||
button.btn.btn-sm.btn-primary.pull-right(ng-click='saveEdit(group)', ng-show='group._editing')=env.t('save')
|
button.btn.btn-sm.btn-primary.pull-right(ng-click='saveEdit(group)', ng-show='group._editing')=env.t('save')
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html')
|
|||||||
li='{{::group.memberCount}} ' + env.t('members')
|
li='{{::group.memberCount}} ' + env.t('members')
|
||||||
// join / leave
|
// join / leave
|
||||||
li.bg-transparent
|
li.bg-transparent
|
||||||
a.btn.btn-sm.btn-danger(ng-if="::isMemberOfGroup(User.user._id, group)", ng-click='clickLeave(group, $event)')
|
a.btn.btn-sm.btn-danger(ng-if="isMemberOfGroup(User.user._id, group)", ng-click='clickLeave(group, $event)')
|
||||||
span.glyphicon.glyphicon-ban-circle
|
span.glyphicon.glyphicon-ban-circle
|
||||||
=env.t('leave')
|
=env.t('leave')
|
||||||
a.btn.btn-sm.btn-success(ng-if="::!isMemberOfGroup(User.user._id, group)", ng-click='join(group)')
|
a.btn.btn-sm.btn-success(ng-if="!isMemberOfGroup(User.user._id, group)", ng-click='join(group)')
|
||||||
span.glyphicon.glyphicon-ok
|
span.glyphicon.glyphicon-ok
|
||||||
=env.t('join')
|
=env.t('join')
|
||||||
h4: a(href='/#/options/groups/guilds/{{::group._id}}') {{::group.name}}
|
h4: a(href='/#/options/groups/guilds/{{::group._id}}') {{::group.name}}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
- var newParty = 'User.user.invitations.party'
|
- var newParty = 'User.user.invitations.party'
|
||||||
.containter-fluid(ng-if='#{newParty}.id && party._id')
|
.containter-fluid(ng-if='#{newParty}.id && group._id')
|
||||||
.row.text-center
|
.row.text-center
|
||||||
.col-sm-6.col-sm-offset-3.alert.alert-warning
|
.col-sm-6.col-sm-offset-3.alert.alert-warning
|
||||||
p {{::env.t('invitedToNewParty', { partyName: #{newParty}.name })}}
|
p {{::env.t('invitedToNewParty', { partyName: #{newParty}.name })}}
|
||||||
|
|||||||
Reference in New Issue
Block a user