mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
Updated get challenges api to return challenges sorted by which challenges include the habitica_official category (#10079)
and removed sorting on the official flag of the challenges object. fixes #9955
This commit is contained in:
@@ -151,7 +151,10 @@ describe('GET challenges/groups/:groupId', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
officialChallenge = await generateChallenge(user, group, {
|
officialChallenge = await generateChallenge(user, group, {
|
||||||
official: true,
|
categories: [{
|
||||||
|
name: 'habitica_official',
|
||||||
|
slug: 'habitica_official',
|
||||||
|
}],
|
||||||
});
|
});
|
||||||
|
|
||||||
challenge = await generateChallenge(user, group);
|
challenge = await generateChallenge(user, group);
|
||||||
|
|||||||
@@ -193,7 +193,10 @@ describe('GET challenges/user', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
officialChallenge = await generateChallenge(user, group, {
|
officialChallenge = await generateChallenge(user, group, {
|
||||||
official: true,
|
categories: [{
|
||||||
|
name: 'habitica_official',
|
||||||
|
slug: 'habitica_official',
|
||||||
|
}],
|
||||||
});
|
});
|
||||||
|
|
||||||
challenge = await generateChallenge(user, group);
|
challenge = await generateChallenge(user, group);
|
||||||
|
|||||||
@@ -355,13 +355,18 @@ api.getUserChallenges = {
|
|||||||
let challenges = await Challenge.find({
|
let challenges = await Challenge.find({
|
||||||
$or: orOptions,
|
$or: orOptions,
|
||||||
})
|
})
|
||||||
.sort('-official -createdAt')
|
.sort('-createdAt')
|
||||||
// see below why we're not using populate
|
// see below why we're not using populate
|
||||||
// .populate('group', basicGroupFields)
|
// .populate('group', basicGroupFields)
|
||||||
// .populate('leader', nameFields)
|
// .populate('leader', nameFields)
|
||||||
.exec();
|
.exec();
|
||||||
|
|
||||||
let resChals = challenges.map(challenge => challenge.toJSON());
|
let resChals = challenges.map(challenge => challenge.toJSON());
|
||||||
|
|
||||||
|
resChals = _.orderBy(resChals, [challenge => {
|
||||||
|
return challenge.categories.map(category => category.slug).includes('habitica_official');
|
||||||
|
}], ['desc']);
|
||||||
|
|
||||||
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
await Promise.all(resChals.map((chal, index) => {
|
await Promise.all(resChals.map((chal, index) => {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
@@ -412,11 +417,16 @@ api.getGroupChallenges = {
|
|||||||
if (!group) throw new NotFound(res.t('groupNotFound'));
|
if (!group) throw new NotFound(res.t('groupNotFound'));
|
||||||
|
|
||||||
let challenges = await Challenge.find({group: groupId})
|
let challenges = await Challenge.find({group: groupId})
|
||||||
.sort('-official -createdAt')
|
.sort('-createdAt')
|
||||||
// .populate('leader', nameFields) // Only populate the leader as the group is implicit
|
// .populate('leader', nameFields) // Only populate the leader as the group is implicit
|
||||||
.exec();
|
.exec();
|
||||||
|
|
||||||
let resChals = challenges.map(challenge => challenge.toJSON());
|
let resChals = challenges.map(challenge => challenge.toJSON());
|
||||||
|
|
||||||
|
resChals = _.orderBy(resChals, [challenge => {
|
||||||
|
return challenge.categories.map(category => category.slug).includes('habitica_official');
|
||||||
|
}], ['desc']);
|
||||||
|
|
||||||
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
// Instead of populate we make a find call manually because of https://github.com/Automattic/mongoose/issues/3833
|
||||||
await Promise.all(resChals.map((chal, index) => {
|
await Promise.all(resChals.map((chal, index) => {
|
||||||
return User
|
return User
|
||||||
|
|||||||
Reference in New Issue
Block a user