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:
Keith Holliday
2016-05-18 10:22:32 +01:00
committed by Matteo Pagliazzi
parent 7ac67315e6
commit 1a87619bac
8 changed files with 35 additions and 25 deletions

View File

@@ -423,7 +423,9 @@ describe("Party Controller", function() {
describe('#leaveOldPartyAndJoinNewParty', function() {
beforeEach(function() {
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({
_id: 'old-party'
});
@@ -441,20 +443,17 @@ describe("Party Controller", function() {
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
expect(groups.Group.leave).to.be.calledOnce;
expect(groups.Group.leave).to.be.calledWith({
gid: 'old-party',
keep: false
});
expect(groups.Group.leave).to.be.calledWith('old-party', false);
});
it('joins the new party', function() {
it('joins the new party', function(done) {
scope.leaveOldPartyAndJoinNewParty('some-id', 'some-name');
expect(scope.join).to.be.calledOnce;
expect(scope.join).to.be.calledWith({
id: 'some-id',
name: 'some-name'
});
setTimeout(function() {
expect(scope.join).to.be.calledOnce;
expect(scope.join).to.be.calledWith({id: 'some-id', name: 'some-name'});
done();
}, 1000);
});
});

View File

@@ -57,12 +57,15 @@ habitrpg.controller("GuildsCtrl", ['$scope', 'Groups', 'User', 'Challenges', '$r
.then(function (response) {
var joinedGroup = response.data.data;
User.user.guilds.push(joinedGroup._id);
if (joinedGroup.privacy == 'public') {
Analytics.track({'hitType':'event', 'eventCategory':'behavior', 'eventAction':'join group', 'owner':false, 'groupType':'guild','privacy': joinedGroup.privacy, 'groupName': joinedGroup.name})
} else {
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 {
Groups.Group.leave($scope.selectedGroup._id, keep)
.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');
});
}
}

View File

@@ -56,6 +56,8 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
$scope.join = function (party) {
Groups.Group.join(party.id)
.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.updateUser({'partyID': party.id});
$rootScope.hardRedirect('/#/options/groups/party');
@@ -131,12 +133,13 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
$scope.leaveOldPartyAndJoinNewParty = function(newPartyId, 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() {
$scope.group = {
loadingNewParty: true
};
$scope.join({ id: newPartyId, name: newPartyName });
});
Groups.Group.leave(Groups.data.party._id, false)
.then(function() {
$scope.group = {
loadingNewParty: true
};
$scope.join({ id: newPartyId, name: newPartyName });
});
}
}
@@ -183,6 +186,7 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
$scope.questForceStart = function(){
Quests.sendAction('quests/force-start')
.then(function(quest) {
console.log(quest)
$scope.group.quest = quest;
});
};

View File

@@ -121,6 +121,7 @@ angular.module('habitrpg')
});
var quest = response.data.quest;
if (!quest) quest = response.data.data;
resolve(quest);
});;
});

View File

@@ -12,7 +12,7 @@
td
a(ui-sref='options.social.challenges.detail({cid:challenge._id, groupIdFilter: group._id})')
markdown(text='challenge.name')
div(ng-if='group.challenges.length == 0')
div(ng-if='!group.challenges || group.challenges.length == 0')
p
| 
=env.t('noChallenges')

View File

@@ -18,10 +18,10 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
h3.panel-title
span {{group.name}}
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
=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')
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')

View File

@@ -45,10 +45,10 @@ script(type='text/ng-template', id='partials/options.social.guilds.public.html')
li='{{::group.memberCount}} ' + env.t('members')
// join / leave
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
=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
=env.t('join')
h4: a(href='/#/options/groups/guilds/{{::group._id}}') {{::group.name}}

View File

@@ -1,5 +1,5 @@
- 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
.col-sm-6.col-sm-offset-3.alert.alert-warning
p {{::env.t('invitedToNewParty', { partyName: #{newParty}.name })}}