From 48e3b218fa4a08e89006e0c10cd0a4b9a3c7a8cf Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 16 Nov 2021 11:55:20 -0600 Subject: [PATCH 01/17] 4.211.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d497293105..ff0c8b62fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.2", + "version": "4.211.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e92c230bde..e0d42f50ad 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.2", + "version": "4.211.3", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0", From 86d6580ffb1973a5f6766e18d70466697fc9a8d1 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 16 Nov 2021 15:54:24 -0600 Subject: [PATCH 02/17] fix(language): prefer session data over request data --- website/server/middlewares/language.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/server/middlewares/language.js b/website/server/middlewares/language.js index bb9bbacb0e..bef28a75dc 100644 --- a/website/server/middlewares/language.js +++ b/website/server/middlewares/language.js @@ -19,12 +19,6 @@ export function attachTranslateFunction (req, res, next) { } export function getUserLanguage (req, res, next) { - // In case the language is specified in the request url, use intersection - if (req.query.lang) { - req.language = translations[req.query.lang] ? req.query.lang : 'en'; - return next(); - } - // If the request is authenticated, use the user's preferred language if (res.locals && res.locals.user) { req.language = getLanguageFromUser(res.locals.user, req); @@ -45,6 +39,12 @@ export function getUserLanguage (req, res, next) { .catch(next); } + // In case the language is specified in the request url, use intersection + if (req.query.lang) { + req.language = translations[req.query.lang] ? req.query.lang : 'en'; + return next(); + } + // Otherwise get from browser req.language = getLanguageFromBrowser(req); return next(); From 93e0d16d5d36f574a3e10840c7468fc2d77c1912 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 16 Nov 2021 16:02:26 -0600 Subject: [PATCH 03/17] fix(test): skip undesired test --- test/api/unit/middlewares/language.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/api/unit/middlewares/language.test.js b/test/api/unit/middlewares/language.test.js index 8aad89e714..3061bebe43 100644 --- a/test/api/unit/middlewares/language.test.js +++ b/test/api/unit/middlewares/language.test.js @@ -90,7 +90,7 @@ describe('language middleware', () => { checkResT(res); }); - it('uses query even if the request includes a user and session', () => { + xit('uses query even if the request includes a user and session', () => { req.query = { lang: 'es', }; From 89f449b513914a1da368de9d08ab05260aa2c7bf Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 16 Nov 2021 16:34:15 -0600 Subject: [PATCH 04/17] 4.211.4 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff0c8b62fa..97d88559a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.3", + "version": "4.211.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e0d42f50ad..1505312df5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.3", + "version": "4.211.4", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0", From 79033af36e708e7823a54730054a5909979df38b Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 17 Nov 2021 10:46:08 -0600 Subject: [PATCH 05/17] Revert "fix(test): skip undesired test" This reverts commit 93e0d16d5d36f574a3e10840c7468fc2d77c1912. --- test/api/unit/middlewares/language.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/api/unit/middlewares/language.test.js b/test/api/unit/middlewares/language.test.js index 3061bebe43..8aad89e714 100644 --- a/test/api/unit/middlewares/language.test.js +++ b/test/api/unit/middlewares/language.test.js @@ -90,7 +90,7 @@ describe('language middleware', () => { checkResT(res); }); - xit('uses query even if the request includes a user and session', () => { + it('uses query even if the request includes a user and session', () => { req.query = { lang: 'es', }; From b943f4bc7f34f376a7d71b66c1bd455185065d0b Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 17 Nov 2021 10:46:46 -0600 Subject: [PATCH 06/17] Revert "fix(language): prefer session data over request data" This reverts commit 86d6580ffb1973a5f6766e18d70466697fc9a8d1. --- website/server/middlewares/language.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/server/middlewares/language.js b/website/server/middlewares/language.js index bef28a75dc..bb9bbacb0e 100644 --- a/website/server/middlewares/language.js +++ b/website/server/middlewares/language.js @@ -19,6 +19,12 @@ export function attachTranslateFunction (req, res, next) { } export function getUserLanguage (req, res, next) { + // In case the language is specified in the request url, use intersection + if (req.query.lang) { + req.language = translations[req.query.lang] ? req.query.lang : 'en'; + return next(); + } + // If the request is authenticated, use the user's preferred language if (res.locals && res.locals.user) { req.language = getLanguageFromUser(res.locals.user, req); @@ -39,12 +45,6 @@ export function getUserLanguage (req, res, next) { .catch(next); } - // In case the language is specified in the request url, use intersection - if (req.query.lang) { - req.language = translations[req.query.lang] ? req.query.lang : 'en'; - return next(); - } - // Otherwise get from browser req.language = getLanguageFromBrowser(req); return next(); From d1b537a737417b6bebd1bc3802cc65db6b436ab4 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 17 Nov 2021 09:37:28 -0600 Subject: [PATCH 07/17] fix(language): test to see if Axios is the culprit --- website/client/package-lock.json | 131 ++++++++++++++----------------- website/client/package.json | 4 +- 2 files changed, 60 insertions(+), 75 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index e32afe7ea5..286045676e 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -12822,11 +12822,34 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -12863,6 +12886,38 @@ "ansi-regex": "^5.0.1" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -14061,9 +14116,9 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", "requires": { "follow-redirects": "^1.14.4" } @@ -28830,76 +28885,6 @@ } } }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "vue-mugen-scroll": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz", diff --git a/website/client/package.json b/website/client/package.json index da8b50ae1b..eac1017547 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -13,11 +13,11 @@ "storybook:serve": "vue-cli-service storybook:serve -p 6006 -c config/storybook" }, "dependencies": { - "@storybook/addons": "6.3.12", "@storybook/addon-actions": "6.3.12", "@storybook/addon-knobs": "6.2.9", "@storybook/addon-links": "6.3.12", "@storybook/addon-notes": "5.3.21", + "@storybook/addons": "6.3.12", "@storybook/vue": "6.3.12", "@vue/cli-plugin-babel": "^4.5.15", "@vue/cli-plugin-eslint": "^4.5.15", @@ -26,7 +26,7 @@ "@vue/cli-service": "^4.5.15", "@vue/test-utils": "1.0.0-beta.29", "amplitude-js": "^8.10.0", - "axios": "^0.24.0", + "axios": "^0.23.0", "axios-progress-bar": "^1.2.0", "babel-eslint": "^10.1.0", "bootstrap": "^4.6.0", From c57ebb5624e89dd98662ff8f04ffb5d697e94584 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 17 Nov 2021 10:48:05 -0600 Subject: [PATCH 08/17] 4.211.5 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97d88559a2..a619d5e3d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.4", + "version": "4.211.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1505312df5..60dec8ca05 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.4", + "version": "4.211.5", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0", From ccc6c9ef6c74e0859b7faf3dc3787dbded64703f Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 17 Nov 2021 13:54:06 -0600 Subject: [PATCH 09/17] Revert "fix(language): test to see if Axios is the culprit" This reverts commit d1b537a737417b6bebd1bc3802cc65db6b436ab4. --- website/client/package-lock.json | 131 +++++++++++++++++-------------- website/client/package.json | 4 +- 2 files changed, 75 insertions(+), 60 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 286045676e..e32afe7ea5 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -12822,34 +12822,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -12886,38 +12863,6 @@ "ansi-regex": "^5.0.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -14116,9 +14061,9 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { "follow-redirects": "^1.14.4" } @@ -28885,6 +28830,76 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-mugen-scroll": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz", diff --git a/website/client/package.json b/website/client/package.json index eac1017547..da8b50ae1b 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -13,11 +13,11 @@ "storybook:serve": "vue-cli-service storybook:serve -p 6006 -c config/storybook" }, "dependencies": { + "@storybook/addons": "6.3.12", "@storybook/addon-actions": "6.3.12", "@storybook/addon-knobs": "6.2.9", "@storybook/addon-links": "6.3.12", "@storybook/addon-notes": "5.3.21", - "@storybook/addons": "6.3.12", "@storybook/vue": "6.3.12", "@vue/cli-plugin-babel": "^4.5.15", "@vue/cli-plugin-eslint": "^4.5.15", @@ -26,7 +26,7 @@ "@vue/cli-service": "^4.5.15", "@vue/test-utils": "1.0.0-beta.29", "amplitude-js": "^8.10.0", - "axios": "^0.23.0", + "axios": "^0.24.0", "axios-progress-bar": "^1.2.0", "babel-eslint": "^10.1.0", "bootstrap": "^4.6.0", From 90a14ee871f5a8ada79365f7e95bdd85bc67424e Mon Sep 17 00:00:00 2001 From: agares Date: Thu, 18 Nov 2021 19:14:00 +0100 Subject: [PATCH 10/17] Set cache to private for the language resources --- website/server/controllers/api-v3/i18n.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/server/controllers/api-v3/i18n.js b/website/server/controllers/api-v3/i18n.js index 4c86cb986a..4b4673594c 100644 --- a/website/server/controllers/api-v3/i18n.js +++ b/website/server/controllers/api-v3/i18n.js @@ -21,6 +21,9 @@ api.geti18nBrowserScript = { url: '/i18n/browser-script', async handler (req, res) { if (IS_PROD) { + res.set({ + 'Cache-Control': 'private' + }); res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}${req.language}.js`); } else { res.set({ From df28670d1606487a3dcbe8f02d787995f2172249 Mon Sep 17 00:00:00 2001 From: agares Date: Thu, 18 Nov 2021 19:28:44 +0100 Subject: [PATCH 11/17] Make the linter happy --- website/server/controllers/api-v3/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/server/controllers/api-v3/i18n.js b/website/server/controllers/api-v3/i18n.js index 4b4673594c..8078e16fa5 100644 --- a/website/server/controllers/api-v3/i18n.js +++ b/website/server/controllers/api-v3/i18n.js @@ -22,7 +22,7 @@ api.geti18nBrowserScript = { async handler (req, res) { if (IS_PROD) { res.set({ - 'Cache-Control': 'private' + 'Cache-Control': 'private', }); res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}${req.language}.js`); } else { From 30a5c3f91b192d6a64a64bb44f8d41e5cca97b22 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 12:58:51 -0600 Subject: [PATCH 12/17] 4.211.6 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index a619d5e3d7..aa788b48b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.5", + "version": "4.211.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 60dec8ca05..828fa72815 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.5", + "version": "4.211.6", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0", From c7c17dbb5568d9be1223858473bb82e71a81536e Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 11:00:01 -0600 Subject: [PATCH 13/17] fix(language): load locale during build of app.vue --- website/client/src/app.vue | 5 +++- website/client/src/libs/i18n.js | 42 ++++++++++++++++++--------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/website/client/src/app.vue b/website/client/src/app.vue index 31b6a912b4..d6174f9ac2 100644 --- a/website/client/src/app.vue +++ b/website/client/src/app.vue @@ -406,7 +406,10 @@ export default { this.$store.state.isUserLoaded = true; Analytics.setUser(); Analytics.updateUser(); - + return axios.get('/api/v4/i18n/browser-script', { language: this.user.preferences.language }); + }).then(() => { + const i18nData = window && window['habitica-i18n']; + this.$loadLocale(i18nData); this.hideLoadingScreen(); // Adjust the timezone offset diff --git a/website/client/src/libs/i18n.js b/website/client/src/libs/i18n.js index 35d0233f37..7079d7e4eb 100644 --- a/website/client/src/libs/i18n.js +++ b/website/client/src/libs/i18n.js @@ -4,28 +4,32 @@ import moment from 'moment'; import i18n from '@/../../common/script/i18n'; +function loadLocale (i18nData) { + // Load i18n strings + i18n.strings = i18nData.strings; + + // Load Moment.js locale + const { language } = i18nData; + + if (language && i18nData.momentLang && language.momentLangCode) { + // Make moment available under `window` so that the locale can be set + window.moment = moment; + + // Execute the script and set the locale + const head = document.getElementsByTagName('head')[0]; + const script = document.createElement('script'); + script.type = 'text/javascript'; + script.text = i18nData.momentLang; + head.appendChild(script); + moment.locale(language.momentLangCode); + } +} + export default { install (Vue, { i18nData }) { - if (i18nData) { - // Load i18n strings - i18n.strings = i18nData.strings; + if (i18nData) loadLocale(i18nData); - // Load Moment.js locale - const { language } = i18nData; - - if (language && i18nData.momentLang && language.momentLangCode) { - // Make moment available under `window` so that the locale can be set - window.moment = moment; - - // Execute the script and set the locale - const head = document.getElementsByTagName('head')[0]; - const script = document.createElement('script'); - script.type = 'text/javascript'; - script.text = i18nData.momentLang; - head.appendChild(script); - moment.locale(language.momentLangCode); - } - } + Vue.prototype.$loadLocale = loadLocale; Vue.prototype.$t = function translateString (...args) { return i18n.t.apply(null, [...args]); From 6475eb4f5c6dc9cf6b69f809d97dcb3127de7959 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 14:52:36 -0600 Subject: [PATCH 14/17] 4.211.7 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa788b48b2..7aa625ef94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.6", + "version": "4.211.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 828fa72815..e5d90efecd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.6", + "version": "4.211.7", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0", From 31469a2d7076f2bfa123aad078c017e53630f712 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 15:18:30 -0600 Subject: [PATCH 15/17] Revert "Make the linter happy" This reverts commit df28670d1606487a3dcbe8f02d787995f2172249. --- website/server/controllers/api-v3/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/server/controllers/api-v3/i18n.js b/website/server/controllers/api-v3/i18n.js index 8078e16fa5..4b4673594c 100644 --- a/website/server/controllers/api-v3/i18n.js +++ b/website/server/controllers/api-v3/i18n.js @@ -22,7 +22,7 @@ api.geti18nBrowserScript = { async handler (req, res) { if (IS_PROD) { res.set({ - 'Cache-Control': 'private', + 'Cache-Control': 'private' }); res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}${req.language}.js`); } else { From c6d195415391519bc70892ee524f06c4ade1da22 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 15:18:53 -0600 Subject: [PATCH 16/17] Revert "Set cache to private for the language resources" This reverts commit 90a14ee871f5a8ada79365f7e95bdd85bc67424e. --- website/server/controllers/api-v3/i18n.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/website/server/controllers/api-v3/i18n.js b/website/server/controllers/api-v3/i18n.js index 4b4673594c..4c86cb986a 100644 --- a/website/server/controllers/api-v3/i18n.js +++ b/website/server/controllers/api-v3/i18n.js @@ -21,9 +21,6 @@ api.geti18nBrowserScript = { url: '/i18n/browser-script', async handler (req, res) { if (IS_PROD) { - res.set({ - 'Cache-Control': 'private' - }); res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}${req.language}.js`); } else { res.set({ From aefe4a6ee3b23c814f4db011aeb0d1d8d25e87fe Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 18 Nov 2021 15:19:02 -0600 Subject: [PATCH 17/17] 4.211.8 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7aa625ef94..97735408f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.211.7", + "version": "4.211.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e5d90efecd..7a65d3343f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.211.7", + "version": "4.211.8", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.16.0",