diff --git a/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js b/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js index 71d3e86f51..0502be654c 100644 --- a/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js +++ b/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js @@ -117,9 +117,7 @@ describe('POST /challenges/:challengeId/leave', () => { }); expect(testTask).to.not.be.undefined; - expect(testTask.challenge).to.eql({ - name: 'None', - }); + expect(testTask.challenge).to.eql({}); }); }); }); diff --git a/test/api/v3/integration/groups/GET-groups_groupId_members.test.js b/test/api/v3/integration/groups/GET-groups_groupId_members.test.js index 72b12453d9..75511cca4c 100644 --- a/test/api/v3/integration/groups/GET-groups_groupId_members.test.js +++ b/test/api/v3/integration/groups/GET-groups_groupId_members.test.js @@ -84,7 +84,7 @@ describe('GET /groups/:groupId/members', () => { expect(Object.keys(memberRes.auth)).to.eql(['timestamps']); expect(Object.keys(memberRes.preferences).sort()).to.eql([ 'size', 'hair', 'skin', 'shirt', - 'chair', 'costume', 'sleep', 'background', 'tasks', + 'chair', 'costume', 'sleep', 'background', ].sort()); expect(memberRes.stats.maxMP).to.exist; diff --git a/test/api/v3/integration/members/GET-members_id.test.js b/test/api/v3/integration/members/GET-members_id.test.js index fa34fac096..06151be350 100644 --- a/test/api/v3/integration/members/GET-members_id.test.js +++ b/test/api/v3/integration/members/GET-members_id.test.js @@ -37,7 +37,7 @@ describe('GET /members/:memberId', () => { expect(Object.keys(memberRes.auth)).to.eql(['timestamps']); expect(Object.keys(memberRes.preferences).sort()).to.eql([ 'size', 'hair', 'skin', 'shirt', - 'chair', 'costume', 'sleep', 'background', 'tasks', + 'chair', 'costume', 'sleep', 'background', ].sort()); expect(memberRes.stats.maxMP).to.exist; diff --git a/website/common/locales/en/tasks.json b/website/common/locales/en/tasks.json index 49e815d20b..8899fb6bab 100644 --- a/website/common/locales/en/tasks.json +++ b/website/common/locales/en/tasks.json @@ -139,6 +139,5 @@ "taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested", "taskApprovalHasBeenRequested": "Approval has been requested", "approvals": "Approvals", - "approvalRequired": "Approval Required", - "groupTasksByChallenge": "Group tasks by challenge title" + "approvalRequired": "Approval Required" } diff --git a/website/server/models/challenge.js b/website/server/models/challenge.js index 9b5ab2df80..4a317f45f3 100644 --- a/website/server/models/challenge.js +++ b/website/server/models/challenge.js @@ -121,7 +121,7 @@ schema.methods.syncToUser = async function syncChallengeToUser (user) { if (!matchingTask) { // If the task is new, create it matchingTask = new Tasks[chalTask.type](Tasks.Task.sanitize(syncableAttrs(chalTask))); - matchingTask.challenge = {taskId: chalTask._id, id: challenge._id, name: challenge.shortName}; + matchingTask.challenge = {taskId: chalTask._id, id: challenge._id}; matchingTask.userId = user._id; user.tasksOrder[`${chalTask.type}s`].push(matchingTask._id); } else { diff --git a/website/server/models/task.js b/website/server/models/task.js index fbe475e357..83d17eb009 100644 --- a/website/server/models/task.js +++ b/website/server/models/task.js @@ -58,7 +58,6 @@ export let TaskSchema = new Schema({ userId: {type: String, ref: 'User', validate: [validator.isUUID, 'Invalid uuid.']}, // When not set it belongs to a challenge challenge: { - name: {type: String, default: 'None'}, id: {type: String, ref: 'Challenge', validate: [validator.isUUID, 'Invalid uuid.']}, // When set (and userId not set) it's the original task taskId: {type: String, ref: 'Task', validate: [validator.isUUID, 'Invalid uuid.']}, // When not set but challenge.id defined it's the original task broken: {type: String, enum: ['CHALLENGE_DELETED', 'TASK_DELETED', 'UNSUBSCRIBED', 'CHALLENGE_CLOSED', 'CHALLENGE_TASK_NOT_FOUND']}, // CHALLENGE_TASK_NOT_FOUND comes from v3 migration diff --git a/website/server/models/user/index.js b/website/server/models/user/index.js index 0b3af02fdf..b996405489 100644 --- a/website/server/models/user/index.js +++ b/website/server/models/user/index.js @@ -7,7 +7,7 @@ require('./methods'); // A list of publicly accessible fields (not everything from preferences because there are also a lot of settings tha should remain private) export let publicFields = `preferences.size preferences.hair preferences.skin preferences.shirt - preferences.chair preferences.costume preferences.sleep preferences.background preferences.tasks profile stats + preferences.chair preferences.costume preferences.sleep preferences.background profile stats achievements party backer contributor auth.timestamps items inbox.optOut`; // The minimum amount of data needed when populating multiple users diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 5ec52c1825..223c6020e9 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -465,9 +465,6 @@ let schema = new Schema({ raisePet: {type: Boolean, default: false}, streak: {type: Boolean, default: false}, }, - tasks: { - groupByChallenge: {type: Boolean, default: false}, - }, improvementCategories: { type: Array, validate: (categories) => { diff --git a/website/views/options/settings.jade b/website/views/options/settings.jade index 6183752724..62fc310f9c 100644 --- a/website/views/options/settings.jade +++ b/website/views/options/settings.jade @@ -87,10 +87,6 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') .checkbox label=env.t('suppressStreakModal') input(type='checkbox', ng-model='user.preferences.suppressModals.streak', ng-change='set({"preferences.suppressModals.streak": user.preferences.suppressModals.streak?true: false})') - - .checkbox - label=env.t('groupTasksByChallenge') - input(type='checkbox', ng-model='user.preferences.tasks.groupByChallenge', ng-change='set({"preferences.tasks.groupByChallenge": user.preferences.tasks.groupByChallenge ? true: false})') hr diff --git a/website/views/shared/tasks/index.jade b/website/views/shared/tasks/index.jade index de8222f0ba..495e5e26a9 100644 --- a/website/views/shared/tasks/index.jade +++ b/website/views/shared/tasks/index.jade @@ -6,10 +6,7 @@ include ./task_view/mixins script(id='templates/habitrpg-tasks.html', type="text/ng-template") .tasks-lists.container-fluid .row - .col-sm-6.col-md-3( - ng-repeat='list in lists', - ng-init="groupedList = _.groupBy(obj[list.type + 's'], 'challenge.name')", - ng-class='::{ "rewards-module": list.type==="reward", "new-row-sm": list.type==="todo" }') + .col-sm-6.col-md-3(ng-repeat='list in lists', ng-class='::{ "rewards-module": list.type==="reward", "new-row-sm": list.type==="todo" }') .task-column(class='{{::list.type}}s') include ./task_view/graph @@ -32,19 +29,8 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") +taskColumnTabs('top') // Actual List - ul(class='{{::list.type}}s main-list', - ng-init='taskList = obj[list.type+"s"]', - ng-show='obj[list.type + "s"].length > 0', - hrpg-sort-tasks, ng-if='!$state.includes("options.social.challenges") && !user.preferences.tasks.groupByChallenge') + ul(class='{{::list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', hrpg-sort-tasks, ng-if='!$state.includes("options.social.challenges")') include ./task - - div(ng-repeat="(key, taskList) in groupedList", ng-if='user.preferences.tasks.groupByChallenge') - h3 {{key}} - ul(class='{{::list.type}}s main-list', - ng-show='taskList.length > 0', hrpg-sort-tasks, - ng-if='!$state.includes("options.social.challenges")') - include ./task - //Loads the non-sortable lists for challenges ul(class='{{::list.type}}s main-list', ng-show='obj[list.type + "s"].length > 0', ng-if='$state.includes("options.social.challenges")') include ./task diff --git a/website/views/shared/tasks/task.jade b/website/views/shared/tasks/task.jade index 59dd8f52c3..43201ecb5e 100644 --- a/website/views/shared/tasks/task.jade +++ b/website/views/shared/tasks/task.jade @@ -1,5 +1,5 @@ li(id='task-{{::task._id}}', - ng-repeat='task in taskList | filterByTaskInfo: obj.filterQuery | conditionalOrderBy: list.view=="dated":"date"', + ng-repeat='task in obj[list.type+"s"] | filterByTaskInfo: obj.filterQuery | conditionalOrderBy: list.view=="dated":"date"', class='task {{Shared.taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main)}}', ng-class='{"cast-target":spell && (list.type != "reward"), "locked-task":obj._locked === true}', ng-click='spell && (list.type != "reward") && castEnd(task, "task", $event)',