mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +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() {
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
};
|
||||
|
||||
@@ -121,6 +121,7 @@ angular.module('habitrpg')
|
||||
});
|
||||
|
||||
var quest = response.data.quest;
|
||||
if (!quest) quest = response.data.data;
|
||||
resolve(quest);
|
||||
});;
|
||||
});
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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}}
|
||||
|
||||
@@ -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 })}}
|
||||
|
||||
Reference in New Issue
Block a user