From e3a1ea6180c7145b59c7d36bc30e609870283bef Mon Sep 17 00:00:00 2001 From: negue Date: Mon, 15 May 2023 23:01:32 +0200 Subject: [PATCH] save task column filter (#14587) * save task column filter * remove old setting * fix tests --- .../client/src/components/settings/site.vue | 16 ----------- .../client/src/components/tasks/column.vue | 19 ++++++++----- .../unit/components/tasks/column.spec.js | 27 ++++++++++++++++++- .../tests/unit/components/tasks/task.spec.js | 8 +++++- website/common/locales/en/settings.json | 2 -- website/server/models/user/schema.js | 7 +++++ 6 files changed, 53 insertions(+), 26 deletions(-) diff --git a/website/client/src/components/settings/site.vue b/website/client/src/components/settings/site.vue index f05282cd01..60c137e67c 100644 --- a/website/client/src/components/settings/site.vue +++ b/website/client/src/components/settings/site.vue @@ -144,22 +144,6 @@ >{{ $t('startAdvCollapsed') }} -
- -
{ diff --git a/website/client/tests/unit/components/tasks/column.spec.js b/website/client/tests/unit/components/tasks/column.spec.js index 2fbea418ef..a44bf4be4d 100644 --- a/website/client/tests/unit/components/tasks/column.spec.js +++ b/website/client/tests/unit/components/tasks/column.spec.js @@ -21,6 +21,18 @@ describe('Task Column', () => { getters: { 'tasks:getFilteredTaskList': () => [], }, + + state: { + user: { + data: { + preferences: { + tasks: { + activeFilter: {}, + }, + }, + }, + }, + }, }, mocks, stubs, @@ -76,7 +88,20 @@ describe('Task Column', () => { 'tasks:getFilteredTaskList': () => () => habits, }; - const store = new Store({ getters }); + const store = new Store({ + getters, + state: { + user: { + data: { + preferences: { + tasks: { + activeFilter: {}, + }, + }, + }, + }, + }, + }); wrapper = makeWrapper({ store }); }); diff --git a/website/client/tests/unit/components/tasks/task.spec.js b/website/client/tests/unit/components/tasks/task.spec.js index 9349d7ea2f..bba52c2e41 100644 --- a/website/client/tests/unit/components/tasks/task.spec.js +++ b/website/client/tests/unit/components/tasks/task.spec.js @@ -22,7 +22,13 @@ describe('Task', () => { state: { user: { data: { - preferences: {}, + preferences: { + tasks: { + activeFilter: { + + }, + }, + }, ...additionalUserData, }, }, diff --git a/website/common/locales/en/settings.json b/website/common/locales/en/settings.json index 3c93d6c000..7dba6eca24 100644 --- a/website/common/locales/en/settings.json +++ b/website/common/locales/en/settings.json @@ -5,8 +5,6 @@ "helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit the Aspiring Linguists Guild!", "stickyHeader": "Sticky header", "newTaskEdit": "Open new tasks in edit mode", - "dailyDueDefaultView": "Set Dailies default to 'due' tab", - "dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'", "reverseChatOrder": "Show chat messages in reverse order", "startAdvCollapsed": "Advanced Settings in tasks start collapsed", "startAdvCollapsedPop": "With this option set, Advanced Settings will be hidden when you first open a task for editing.", diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 5ed98a11d9..a0148bc7dc 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -534,6 +534,7 @@ export default new Schema({ stickyHeader: { $type: Boolean, default: true }, disableClasses: { $type: Boolean, default: false }, newTaskEdit: { $type: Boolean, default: false }, + // not used anymore, now the current filter is saved in preferences.activeFilter dailyDueDefaultView: { $type: Boolean, default: false }, advancedCollapsed: { $type: Boolean, default: false }, toolbarCollapsed: { $type: Boolean, default: false }, @@ -594,6 +595,12 @@ export default new Schema({ mirrorGroupTasks: [ { $type: String, validate: [v => validator.isUUID(v), 'Invalid group UUID.'], ref: 'Group' }, ], + activeFilter: { + habit: { $type: String, default: 'all' }, + daily: { $type: String, default: 'all' }, + todo: { $type: String, default: 'remaining' }, + reward: { $type: String, default: 'all' }, + }, }, improvementCategories: { $type: Array,