From 86efb02358c52d5254a084ce94ee82be9beb0662 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 18 Apr 2023 15:43:35 -0500 Subject: [PATCH 01/17] fix(api): address issues caused by 3p tools and flag accounts that use them --- website/common/script/constants.js | 2 ++ website/common/script/index.js | 2 ++ website/server/controllers/api-v3/user.js | 7 ++++++ website/server/middlewares/auth.js | 4 ++++ website/server/models/user/schema.js | 29 ++++++++++++----------- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/website/common/script/constants.js b/website/common/script/constants.js index b3510378e0..248560f28a 100644 --- a/website/common/script/constants.js +++ b/website/common/script/constants.js @@ -25,6 +25,8 @@ export const SUPPORTED_SOCIAL_NETWORKS = [ { key: 'apple', name: 'Apple' }, ]; +export const OFFICIAL_PLATFORMS = ['habitica-web', 'habitica-ios', 'habitica-android']; + export const GUILDS_PER_PAGE = 30; // number of guilds to return per page when using pagination export const PARTY_LIMIT_MEMBERS = 29; diff --git a/website/common/script/index.js b/website/common/script/index.js index 3045e012ee..3c6b5b0d6c 100644 --- a/website/common/script/index.js +++ b/website/common/script/index.js @@ -22,6 +22,7 @@ import { TAVERN_ID, MAX_MESSAGE_LENGTH, MAX_GIFT_MESSAGE_LENGTH, + OFFICIAL_PLATFORMS, } from './constants'; import content from './content/index'; import * as count from './count'; @@ -124,6 +125,7 @@ api.constants = { MAX_MESSAGE_LENGTH, MAX_GIFT_MESSAGE_LENGTH, MAX_LEVEL_HARD_CAP, + OFFICIAL_PLATFORMS, }; // TODO Move these under api.constants api.maxLevel = MAX_LEVEL; diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index c422541705..c5e1acbc8e 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -22,6 +22,7 @@ import { } from '../../libs/email'; import * as inboxLib from '../../libs/inbox'; import * as userLib from '../../libs/user'; +import { OFFICIAL_PLATFORMS } from '../../../common/script/constants'; const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); const DELETE_CONFIRMATION = 'DELETE'; @@ -494,6 +495,9 @@ api.buy = { let quantity = 1; if (req.body.quantity) quantity = req.body.quantity; req.quantity = quantity; + if (OFFICIAL_PLATFORMS.indexOf(req.headers['x-client']) === -1) { + res.analytics = undefined; + } const buyRes = await common.ops.buy(user, req, res.analytics); await user.save(); @@ -584,6 +588,9 @@ api.buyArmoire = { const { user } = res.locals; req.type = 'armoire'; req.params.key = 'armoire'; + if (OFFICIAL_PLATFORMS.indexOf(req.headers['x-client']) === -1) { + res.analytics = undefined; + } const buyArmoireResponse = await common.ops.buy(user, req, res.analytics); await user.save(); res.respond(200, ...buyArmoireResponse); diff --git a/website/server/middlewares/auth.js b/website/server/middlewares/auth.js index 7332ba30c3..dfc01ed99e 100644 --- a/website/server/middlewares/auth.js +++ b/website/server/middlewares/auth.js @@ -55,6 +55,7 @@ export function authWithHeaders (options = {}) { return function authWithHeadersHandler (req, res, next) { const userId = req.header('x-api-user'); const apiToken = req.header('x-api-key'); + const client = req.header('x-client'); const optional = options.optional || false; if (!userId || !apiToken) { @@ -90,6 +91,9 @@ export function authWithHeaders (options = {}) { req.session.userId = user._id; stackdriverTraceUserId(user._id); user.auth.timestamps.updated = new Date(); + if (common.constants.OFFICIAL_PLATFORMS.indexOf(client) === -1 && !user.flags.thirdPartyTools) { + User.updateOne(userQuery, { $set: { 'flags.thirdPartyTools': true }}).exec(); + } return next(); }) .catch(next); diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 7c9ab11a59..2af2b88e66 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -306,6 +306,7 @@ export default new Schema({ cardReceived: { $type: Boolean, default: false }, warnedLowHealth: { $type: Boolean, default: false }, verifiedUsername: { $type: Boolean, default: false }, + thirdPartyTools: { $type: Boolean, default: false }, }, history: { @@ -613,10 +614,10 @@ export default new Schema({ }, }, stats: { - hp: { $type: Number, default: shared.maxHealth }, - mp: { $type: Number, default: 10 }, - exp: { $type: Number, default: 0 }, - gp: { $type: Number, default: 0 }, + hp: { $type: Number, default: shared.maxHealth, min: 0 }, + mp: { $type: Number, default: 10, min: 0 }, + exp: { $type: Number, default: 0, min: 0 }, + gp: { $type: Number, default: 0, min: 0 }, lvl: { $type: Number, default: 1, @@ -628,17 +629,17 @@ export default new Schema({ class: { $type: String, enum: ['warrior', 'rogue', 'wizard', 'healer'], default: 'warrior', required: true, }, - points: { $type: Number, default: 0 }, - str: { $type: Number, default: 0 }, - con: { $type: Number, default: 0 }, - int: { $type: Number, default: 0 }, - per: { $type: Number, default: 0 }, + points: { $type: Number, default: 0, min: 0 }, + str: { $type: Number, default: 0, min: 0 }, + con: { $type: Number, default: 0, min: 0 }, + int: { $type: Number, default: 0, min: 0 }, + per: { $type: Number, default: 0, min: 0 }, buffs: { - str: { $type: Number, default: 0 }, - int: { $type: Number, default: 0 }, - per: { $type: Number, default: 0 }, - con: { $type: Number, default: 0 }, - stealth: { $type: Number, default: 0 }, + str: { $type: Number, default: 0, min: 0 }, + int: { $type: Number, default: 0, min: 0 }, + per: { $type: Number, default: 0, min: 0 }, + con: { $type: Number, default: 0, min: 0 }, + stealth: { $type: Number, default: 0, min: 0 }, streaks: { $type: Boolean, default: false }, snowball: { $type: Boolean, default: false }, spookySparkles: { $type: Boolean, default: false }, From 3cf5b90f0421b589732cbb1609dd0b19f3cea172 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 19 Apr 2023 09:33:03 -0500 Subject: [PATCH 02/17] fix(3p): bad import, change flag format --- website/common/script/constants.js | 2 -- website/common/script/index.js | 2 -- website/server/controllers/api-v3/user.js | 2 +- website/server/middlewares/auth.js | 5 +++-- website/server/models/user/schema.js | 2 +- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/website/common/script/constants.js b/website/common/script/constants.js index 248560f28a..b3510378e0 100644 --- a/website/common/script/constants.js +++ b/website/common/script/constants.js @@ -25,8 +25,6 @@ export const SUPPORTED_SOCIAL_NETWORKS = [ { key: 'apple', name: 'Apple' }, ]; -export const OFFICIAL_PLATFORMS = ['habitica-web', 'habitica-ios', 'habitica-android']; - export const GUILDS_PER_PAGE = 30; // number of guilds to return per page when using pagination export const PARTY_LIMIT_MEMBERS = 29; diff --git a/website/common/script/index.js b/website/common/script/index.js index 3c6b5b0d6c..3045e012ee 100644 --- a/website/common/script/index.js +++ b/website/common/script/index.js @@ -22,7 +22,6 @@ import { TAVERN_ID, MAX_MESSAGE_LENGTH, MAX_GIFT_MESSAGE_LENGTH, - OFFICIAL_PLATFORMS, } from './constants'; import content from './content/index'; import * as count from './count'; @@ -125,7 +124,6 @@ api.constants = { MAX_MESSAGE_LENGTH, MAX_GIFT_MESSAGE_LENGTH, MAX_LEVEL_HARD_CAP, - OFFICIAL_PLATFORMS, }; // TODO Move these under api.constants api.maxLevel = MAX_LEVEL; diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index c5e1acbc8e..c26a0802eb 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -22,8 +22,8 @@ import { } from '../../libs/email'; import * as inboxLib from '../../libs/inbox'; import * as userLib from '../../libs/user'; -import { OFFICIAL_PLATFORMS } from '../../../common/script/constants'; +const OFFICIAL_PLATFORMS = ['habitica-web', 'habitica-ios', 'habitica-android']; const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); const DELETE_CONFIRMATION = 'DELETE'; diff --git a/website/server/middlewares/auth.js b/website/server/middlewares/auth.js index dfc01ed99e..b69cbb41ac 100644 --- a/website/server/middlewares/auth.js +++ b/website/server/middlewares/auth.js @@ -10,6 +10,7 @@ import gcpStackdriverTracer from '../libs/gcpTraceAgent'; import common from '../../common'; import { getLanguageFromUser } from '../libs/language'; +const OFFICIAL_PLATFORMS = ['habitica-web', 'habitica-ios', 'habitica-android']; const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'); const USER_FIELDS_ALWAYS_LOADED = ['_id', 'notifications', 'preferences', 'auth', 'flags', 'permissions']; @@ -91,8 +92,8 @@ export function authWithHeaders (options = {}) { req.session.userId = user._id; stackdriverTraceUserId(user._id); user.auth.timestamps.updated = new Date(); - if (common.constants.OFFICIAL_PLATFORMS.indexOf(client) === -1 && !user.flags.thirdPartyTools) { - User.updateOne(userQuery, { $set: { 'flags.thirdPartyTools': true }}).exec(); + if (OFFICIAL_PLATFORMS.indexOf(client) === -1 && !user.flags.thirdPartyTools) { + User.updateOne(userQuery, { $set: { 'flags.thirdPartyTools': new Date() } }).exec(); } return next(); }) diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 2af2b88e66..6e462b9e35 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -306,7 +306,7 @@ export default new Schema({ cardReceived: { $type: Boolean, default: false }, warnedLowHealth: { $type: Boolean, default: false }, verifiedUsername: { $type: Boolean, default: false }, - thirdPartyTools: { $type: Boolean, default: false }, + thirdPartyTools: { $type: Date }, }, history: { From 0ac2f534050c0f62b8a7dfdbeabbec67d933b82c Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 20 Apr 2023 15:19:05 -0500 Subject: [PATCH 03/17] fix(3p): update timing 1/day at most --- website/server/middlewares/auth.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/server/middlewares/auth.js b/website/server/middlewares/auth.js index b69cbb41ac..cf7804cf20 100644 --- a/website/server/middlewares/auth.js +++ b/website/server/middlewares/auth.js @@ -1,3 +1,4 @@ +import moment from 'moment'; import nconf from 'nconf'; import url from 'url'; import { @@ -92,7 +93,9 @@ export function authWithHeaders (options = {}) { req.session.userId = user._id; stackdriverTraceUserId(user._id); user.auth.timestamps.updated = new Date(); - if (OFFICIAL_PLATFORMS.indexOf(client) === -1 && !user.flags.thirdPartyTools) { + if (OFFICIAL_PLATFORMS.indexOf(client) === -1 + && (!user.flags.thirdPartyTools || moment().diff(user.flags.thirdPartyTools, 'days') > 0) + ) { User.updateOne(userQuery, { $set: { 'flags.thirdPartyTools': new Date() } }).exec(); } return next(); From 92b4a8029d7e463745c344e1ca7c9011f5424e1c Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Apr 2023 15:14:59 -0500 Subject: [PATCH 04/17] fix(links): handle meta key --- website/client/src/mixins/externalLinks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/client/src/mixins/externalLinks.js b/website/client/src/mixins/externalLinks.js index 8acbbeddf5..2a2c0a7b8c 100644 --- a/website/client/src/mixins/externalLinks.js +++ b/website/client/src/mixins/externalLinks.js @@ -20,7 +20,7 @@ export default { && !some(TRUSTED_DOMAINS.split(','), domain => link.href.indexOf(domain) === domainIndex)) { link.classList.add('external-link'); link.addEventListener('click', e => { - if (e.ctrlKey) { + if (e.ctrlKey || e.metaKey) { return; } e.stopPropagation(); From 57027a1a62bbff273e2a35e1bedc113de7c55814 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 25 Apr 2023 15:50:55 -0500 Subject: [PATCH 05/17] 4.267.2 --- 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 dff929a631..5d83e8151c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.267.1", + "version": "4.267.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bb6bce7c68..5041df3909 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.267.1", + "version": "4.267.2", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12", From 61e41b539d1ab5bd7f8146526a09bad8882b1620 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 26 Apr 2023 16:13:42 -0500 Subject: [PATCH 06/17] feat(admin): show 3p note in panel --- .../src/components/admin-panel/user-support/cronAndAuth.vue | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/client/src/components/admin-panel/user-support/cronAndAuth.vue b/website/client/src/components/admin-panel/user-support/cronAndAuth.vue index 8b107ebf21..624992ae70 100644 --- a/website/client/src/components/admin-panel/user-support/cronAndAuth.vue +++ b/website/client/src/components/admin-panel/user-support/cronAndAuth.vue @@ -22,6 +22,10 @@ Account created: {{ hero.auth.timestamps.created | formatDate }} +
+ User has employed third party tools. Last known usage: + {{ hero.flags.thirdPartyTools | formatDate }} +
"lastCron" value: {{ hero.lastCron | formatDate }} From 6cb3dcd76a3d52937b837aaf7dfaf3f3fc231b61 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 27 Apr 2023 15:21:37 -0500 Subject: [PATCH 07/17] fix(fcv): disallow negative values --- test/helpers/api-integration/requester.js | 3 ++- website/client/src/components/settings/restoreModal.vue | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/test/helpers/api-integration/requester.js b/test/helpers/api-integration/requester.js index ad01f35978..61c0b2fabf 100644 --- a/test/helpers/api-integration/requester.js +++ b/test/helpers/api-integration/requester.js @@ -53,7 +53,8 @@ function _requestMaker (user, method, additionalSets = {}) { if (user && user._id && user.apiToken) { request .set('x-api-user', user._id) - .set('x-api-key', user.apiToken); + .set('x-api-key', user.apiToken) + .set('x-client', 'habitica-web'); } if (!isEmpty(additionalSets)) { diff --git a/website/client/src/components/settings/restoreModal.vue b/website/client/src/components/settings/restoreModal.vue index de185f7226..bbd86f000a 100644 --- a/website/client/src/components/settings/restoreModal.vue +++ b/website/client/src/components/settings/restoreModal.vue @@ -179,7 +179,9 @@ export default { let valid = true; for (const stat of canRestore) { - if (this.restoreValues.stats[stat] === '') { + if (this.restoreValues.stats[stat] === '' + || this.restoreValues.stats[stat] < 0 + ) { this.restoreValues.stats[stat] = this.user.stats[stat]; valid = false; } From 33f0a11f19112b14fed7b26dc368a7fbab1d3c21 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Thu, 27 Apr 2023 15:35:55 -0500 Subject: [PATCH 08/17] 4.267.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 5d83e8151c..814d2704df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.267.2", + "version": "4.267.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5041df3909..2e031b74bb 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.267.2", + "version": "4.267.3", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12", From c931823f624131fdbae76a3668cf291d693d52fb Mon Sep 17 00:00:00 2001 From: SabreCat Date: Fri, 28 Apr 2023 15:55:06 -0500 Subject: [PATCH 09/17] chore(subproj): update habitica-images --- habitica-images | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/habitica-images b/habitica-images index 4ec7469f72..311cb01059 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 4ec7469f72f59f0fdac74710d32add59958a540e +Subproject commit 311cb010591a9de368a1ab5db7506d2d3efbb10b From 76845f5f20bc2afedf0838f3679d05e0175f502f Mon Sep 17 00:00:00 2001 From: Natalie L <78037386+CuriousMagpie@users.noreply.github.com> Date: Fri, 28 Apr 2023 17:18:45 -0400 Subject: [PATCH 10/17] feat(content): add May subscriber items (#14613) Co-authored-by: SabreCat --- .../assets/css/sprites/spritesmith-main.css | 25 +++++++++++++++++++ website/common/locales/en/gear.json | 4 +++ website/common/locales/en/subscriber.json | 1 + .../script/content/gear/sets/mystery.js | 2 ++ 4 files changed, 32 insertions(+) diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index c2c9f08756..8a5531760f 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -27905,6 +27905,31 @@ width: 114px; height: 90px; } +.back_mystery_202305 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202305.png'); + width: 114px; + height: 90px; +} +.headAccessory_mystery_202305 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202305.png'); + width: 114px; + height: 90px; +} +.shop_back_mystery_202305 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202305.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_mystery_202305 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_mystery_202305.png'); + width: 68px; + height: 68px; +} +.shop_set_mystery_202305 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202305.png'); + width: 68px; + height: 68px; +} .broad_armor_mystery_301404 { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png'); width: 90px; diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index 6c7ba8a703..dde67616f2 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -2717,6 +2717,8 @@ "backMystery202301Notes": "These fluffy tails contain ethereal power and also a high level of charm! Confers no benefit. January 2023 Subscriber Item.", "backMystery202302Text": "Trickster Tabby Tail", "backMystery202302Notes": "Anytime you wear this tail it's sure to be a frabjous day! Callooh! Callay! Confers no benefit. February 2023 Subscriber Item.", + "backMystery202305Text": "Eventide Wings", + "backMystery202305Notes": "Catch the sparkle of the evening star and soar to strange realms on these wings. Confers no benefit. May 2023 Subscriber Item.", "backSpecialWonderconRedText": "Mighty Cape", "backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.", @@ -2928,6 +2930,8 @@ "headAccessoryMystery202212Notes": "Magnify your warmth and friendship to new heights with this ornate golden tiara. Confers no benefit. December 2022 Subscriber Item.", "headAccessoryMystery202302Text": "Trickster Tabby Ears", "headAccessoryMystery202302Notes": "The purr-fect accessory to set off your enchanting grin. Confers no benefit. February 2023 Subscriber Item.", + "headAccessoryMystery202305Text": "Eventide Horns", + "headAccessoryMystery202305Notes": "These horns glow with reflected moonlight. Confers no benefit. May 2023 Subscriber Item.", "headAccessoryMystery301405Text": "Headwear Goggles", "headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.", diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index 3708259a86..df5f49cb68 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -149,6 +149,7 @@ "mysterySet202302": "Trickster Tabby Set", "mysterySet202303": "Mane Character Set", "mysterySet202304": "Tiptop Teapot Set", + "mysterySet202305": "Eventide Dragon Set", "mysterySet301404": "Steampunk Standard Set", "mysterySet301405": "Steampunk Accessories Set", "mysterySet301703": "Peacock Steampunk Set", diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js index 7d44bfa83d..0800c2363d 100644 --- a/website/common/script/content/gear/sets/mystery.js +++ b/website/common/script/content/gear/sets/mystery.js @@ -99,6 +99,7 @@ const back = { 202206: { }, 202301: { }, 202302: { }, + 202305: { }, }; const body = { @@ -233,6 +234,7 @@ const headAccessory = { 202212: { }, 202205: { }, 202302: { }, + 202305: { }, 301405: { }, }; From 6ed5a0f44b1839331fce51e9b63faa6c3ef2a2a0 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Fri, 28 Apr 2023 16:19:07 -0500 Subject: [PATCH 11/17] 4.268.0 --- 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 814d2704df..3599dd6be2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.267.3", + "version": "4.268.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2e031b74bb..2dad237d4a 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.267.3", + "version": "4.268.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12", From 5aa2d9c68d4682dee05fe8113d9f69c1b72c88e9 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Mon, 1 May 2023 10:47:42 -0500 Subject: [PATCH 12/17] fix(stats): allow negative HP --- website/server/models/user/schema.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 6e462b9e35..1a39c01f31 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -614,7 +614,7 @@ export default new Schema({ }, }, stats: { - hp: { $type: Number, default: shared.maxHealth, min: 0 }, + hp: { $type: Number, default: shared.maxHealth }, mp: { $type: Number, default: 10, min: 0 }, exp: { $type: Number, default: 0, min: 0 }, gp: { $type: Number, default: 0, min: 0 }, From c1532996d84fc2b3520468771bb6e8daa1f39f71 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Mon, 1 May 2023 10:47:53 -0500 Subject: [PATCH 13/17] 4.268.1 --- 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 3599dd6be2..936c950279 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.268.0", + "version": "4.268.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2dad237d4a..329651e2e9 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.268.0", + "version": "4.268.1", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12", From 9e0777bb42eff952f1677a1ac7d888b4a4fad747 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Mon, 1 May 2023 16:30:21 -0500 Subject: [PATCH 14/17] fix(group-plans): tokenize and update ad text --- .../client/src/components/groups/groupPlan.vue | 18 +++++++++--------- website/common/locales/ach/groups.json | 2 +- website/common/locales/af/groups.json | 2 +- website/common/locales/ar/groups.json | 2 +- website/common/locales/be/groups.json | 2 +- website/common/locales/bn/groups.json | 2 +- website/common/locales/ca/groups.json | 2 +- website/common/locales/cs/groups.json | 2 +- website/common/locales/el/groups.json | 2 +- website/common/locales/en@lolcat/groups.json | 2 +- website/common/locales/en@pirate/groups.json | 2 +- website/common/locales/en_GB/groups.json | 2 +- website/common/locales/eo/groups.json | 2 +- website/common/locales/et/groups.json | 2 +- website/common/locales/fa_IR/groups.json | 2 +- website/common/locales/fi/groups.json | 2 +- website/common/locales/fil/groups.json | 2 +- website/common/locales/fy/groups.json | 2 +- website/common/locales/ga/groups.json | 2 +- website/common/locales/haw/groups.json | 2 +- website/common/locales/hi_IN/groups.json | 2 +- website/common/locales/id/groups.json | 2 +- website/common/locales/is/groups.json | 2 +- website/common/locales/jbo/groups.json | 2 +- website/common/locales/jv/groups.json | 2 +- website/common/locales/ko/groups.json | 2 +- website/common/locales/ku_IQ/groups.json | 2 +- website/common/locales/la/groups.json | 2 +- website/common/locales/ln/groups.json | 2 +- website/common/locales/lt/groups.json | 2 +- website/common/locales/lv/groups.json | 2 +- website/common/locales/mk/groups.json | 2 +- website/common/locales/ml/groups.json | 2 +- website/common/locales/mn/groups.json | 2 +- website/common/locales/mr/groups.json | 2 +- website/common/locales/ms/groups.json | 2 +- website/common/locales/nn/groups.json | 2 +- website/common/locales/no/groups.json | 2 +- website/common/locales/ro/groups.json | 2 +- website/common/locales/sco/groups.json | 2 +- website/common/locales/si/groups.json | 2 +- website/common/locales/sk/groups.json | 2 +- website/common/locales/sl/groups.json | 2 +- website/common/locales/sr/groups.json | 2 +- website/common/locales/su/groups.json | 2 +- website/common/locales/sv/groups.json | 2 +- website/common/locales/sw/groups.json | 2 +- website/common/locales/ta/groups.json | 2 +- website/common/locales/th/groups.json | 2 +- website/common/locales/tl_PH/groups.json | 2 +- website/common/locales/tlh/groups.json | 2 +- website/common/locales/ur_PK/groups.json | 2 +- website/common/locales/vi/groups.json | 2 +- website/common/locales/zh_HK/groups.json | 2 +- 54 files changed, 62 insertions(+), 62 deletions(-) diff --git a/website/client/src/components/groups/groupPlan.vue b/website/client/src/components/groups/groupPlan.vue index c628774d9e..6d84aecfc5 100644 --- a/website/client/src/components/groups/groupPlan.vue +++ b/website/client/src/components/groups/groupPlan.vue @@ -4,12 +4,12 @@
-

- Need more for your Group? +

+ {{ $t('groupPlanTitle') }}

-

+

{{ $t('groupBenefitsDescription') }}

@@ -24,8 +24,8 @@ src="~@/assets/images/group-plans/group-14@3x.png" >
-

{{ $t('teamBasedTasks') }}

-

Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!

+

{{ $t('teamBasedTasks') }}

+

{{ $t('teamBasedTasksListDesc') }}

@@ -35,8 +35,8 @@ src="~@/assets/images/group-plans/group-12@3x.png" >
-

Group Management Controls

-

Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.

+

{{ $t('groupManagementControls') }}

+

{{ $t('groupManagementControlsDesc') }}

@@ -46,8 +46,8 @@ src="~@/assets/images/group-plans/group-13@3x.png" >
-

In-Game Benefits

-

Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.

+

{{ $t('inGameBenefits') }}

+

{{ $t('inGameBenefitsDesc') }}

diff --git a/website/common/locales/ach/groups.json b/website/common/locales/ach/groups.json index dc8fe6cf15..a7787ef6af 100755 --- a/website/common/locales/ach/groups.json +++ b/website/common/locales/ach/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/af/groups.json b/website/common/locales/af/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/af/groups.json +++ b/website/common/locales/af/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ar/groups.json b/website/common/locales/ar/groups.json index bae6fe9703..5bfd5f3ac0 100755 --- a/website/common/locales/ar/groups.json +++ b/website/common/locales/ar/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/be/groups.json b/website/common/locales/be/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/be/groups.json +++ b/website/common/locales/be/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/bn/groups.json b/website/common/locales/bn/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/bn/groups.json +++ b/website/common/locales/bn/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ca/groups.json b/website/common/locales/ca/groups.json index d6ec243743..51b312b769 100755 --- a/website/common/locales/ca/groups.json +++ b/website/common/locales/ca/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/cs/groups.json b/website/common/locales/cs/groups.json index a716163f12..b1e4900ee1 100644 --- a/website/common/locales/cs/groups.json +++ b/website/common/locales/cs/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/el/groups.json b/website/common/locales/el/groups.json index 103c919b55..ccfdf7f45c 100755 --- a/website/common/locales/el/groups.json +++ b/website/common/locales/el/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/en@lolcat/groups.json b/website/common/locales/en@lolcat/groups.json index 9b1fed53ba..c22686bcbd 100755 --- a/website/common/locales/en@lolcat/groups.json +++ b/website/common/locales/en@lolcat/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/en@pirate/groups.json b/website/common/locales/en@pirate/groups.json index 4d8c8c7665..87c73e1920 100644 --- a/website/common/locales/en@pirate/groups.json +++ b/website/common/locales/en@pirate/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Squadron members git an exclusive Jackalope Steed, as well as full subscr'ption benefits, includin' special monthly equipment sets an' th' ability t' buy sapphires wit' gold.", "inspireYourParty": "Inspire yer crew, gamify life togeth'r.", diff --git a/website/common/locales/en_GB/groups.json b/website/common/locales/en_GB/groups.json index d4149b13cb..ad83edfeac 100644 --- a/website/common/locales/en_GB/groups.json +++ b/website/common/locales/en_GB/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/eo/groups.json b/website/common/locales/eo/groups.json index 69cf278e3e..7c9d5ebe87 100755 --- a/website/common/locales/eo/groups.json +++ b/website/common/locales/eo/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/et/groups.json b/website/common/locales/et/groups.json index 17504a3626..0bd43f4116 100755 --- a/website/common/locales/et/groups.json +++ b/website/common/locales/et/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/fa_IR/groups.json b/website/common/locales/fa_IR/groups.json index 0d3d60c7a9..6ccd5f29ec 100755 --- a/website/common/locales/fa_IR/groups.json +++ b/website/common/locales/fa_IR/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/fi/groups.json b/website/common/locales/fi/groups.json index 0577168ddf..8708e0e7eb 100755 --- a/website/common/locales/fi/groups.json +++ b/website/common/locales/fi/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/fil/groups.json b/website/common/locales/fil/groups.json index 149ac6088f..09ad0a4ae6 100755 --- a/website/common/locales/fil/groups.json +++ b/website/common/locales/fil/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/fy/groups.json b/website/common/locales/fy/groups.json index 774b9c8ce1..de4e7a2bb7 100755 --- a/website/common/locales/fy/groups.json +++ b/website/common/locales/fy/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ga/groups.json b/website/common/locales/ga/groups.json index 381bda387c..7c9bf3e04c 100755 --- a/website/common/locales/ga/groups.json +++ b/website/common/locales/ga/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/haw/groups.json b/website/common/locales/haw/groups.json index 916473f3f0..7fb977e6d4 100755 --- a/website/common/locales/haw/groups.json +++ b/website/common/locales/haw/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/hi_IN/groups.json b/website/common/locales/hi_IN/groups.json index c104f5b4a3..39dde79f41 100755 --- a/website/common/locales/hi_IN/groups.json +++ b/website/common/locales/hi_IN/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/id/groups.json b/website/common/locales/id/groups.json index 9edc0a1afa..1531aa3719 100644 --- a/website/common/locales/id/groups.json +++ b/website/common/locales/id/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/is/groups.json b/website/common/locales/is/groups.json index 0acd03a6ee..1049893f5b 100755 --- a/website/common/locales/is/groups.json +++ b/website/common/locales/is/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/jbo/groups.json b/website/common/locales/jbo/groups.json index 9c8d9292a1..ef9ff31f08 100755 --- a/website/common/locales/jbo/groups.json +++ b/website/common/locales/jbo/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/jv/groups.json b/website/common/locales/jv/groups.json index 7193f4f939..2a468abe88 100755 --- a/website/common/locales/jv/groups.json +++ b/website/common/locales/jv/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ko/groups.json b/website/common/locales/ko/groups.json index f677068d38..a0d6036146 100755 --- a/website/common/locales/ko/groups.json +++ b/website/common/locales/ko/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ku_IQ/groups.json b/website/common/locales/ku_IQ/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/ku_IQ/groups.json +++ b/website/common/locales/ku_IQ/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/la/groups.json b/website/common/locales/la/groups.json index 417679ab07..5ae56b82f7 100755 --- a/website/common/locales/la/groups.json +++ b/website/common/locales/la/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ln/groups.json b/website/common/locales/ln/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/ln/groups.json +++ b/website/common/locales/ln/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/lt/groups.json b/website/common/locales/lt/groups.json index de7e5982ed..a2e532b4de 100755 --- a/website/common/locales/lt/groups.json +++ b/website/common/locales/lt/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/lv/groups.json b/website/common/locales/lv/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/lv/groups.json +++ b/website/common/locales/lv/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/mk/groups.json b/website/common/locales/mk/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/mk/groups.json +++ b/website/common/locales/mk/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ml/groups.json b/website/common/locales/ml/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/ml/groups.json +++ b/website/common/locales/ml/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/mn/groups.json b/website/common/locales/mn/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/mn/groups.json +++ b/website/common/locales/mn/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/mr/groups.json b/website/common/locales/mr/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/mr/groups.json +++ b/website/common/locales/mr/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ms/groups.json b/website/common/locales/ms/groups.json index f6ce396288..190329634d 100755 --- a/website/common/locales/ms/groups.json +++ b/website/common/locales/ms/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/nn/groups.json b/website/common/locales/nn/groups.json index 141b929886..0b66e6e03c 100755 --- a/website/common/locales/nn/groups.json +++ b/website/common/locales/nn/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/no/groups.json b/website/common/locales/no/groups.json index 4fb08507c4..3a1d18c456 100755 --- a/website/common/locales/no/groups.json +++ b/website/common/locales/no/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ro/groups.json b/website/common/locales/ro/groups.json index afbf97d017..a8a3802a68 100644 --- a/website/common/locales/ro/groups.json +++ b/website/common/locales/ro/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sco/groups.json b/website/common/locales/sco/groups.json index ac3a24265d..b06477cd41 100755 --- a/website/common/locales/sco/groups.json +++ b/website/common/locales/sco/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/si/groups.json b/website/common/locales/si/groups.json index 58d8393d8f..7c308e45a0 100755 --- a/website/common/locales/si/groups.json +++ b/website/common/locales/si/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sk/groups.json b/website/common/locales/sk/groups.json index 3365f1434f..a1e22a5e97 100644 --- a/website/common/locales/sk/groups.json +++ b/website/common/locales/sk/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sl/groups.json b/website/common/locales/sl/groups.json index 0e8b76cf96..b16f92815c 100755 --- a/website/common/locales/sl/groups.json +++ b/website/common/locales/sl/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sr/groups.json b/website/common/locales/sr/groups.json index e1c69b0cac..7555eb9205 100644 --- a/website/common/locales/sr/groups.json +++ b/website/common/locales/sr/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/su/groups.json b/website/common/locales/su/groups.json index 58d8393d8f..7c308e45a0 100755 --- a/website/common/locales/su/groups.json +++ b/website/common/locales/su/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sv/groups.json b/website/common/locales/sv/groups.json index e275921dda..240f27a508 100644 --- a/website/common/locales/sv/groups.json +++ b/website/common/locales/sv/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/sw/groups.json b/website/common/locales/sw/groups.json index 58d8393d8f..7c308e45a0 100755 --- a/website/common/locales/sw/groups.json +++ b/website/common/locales/sw/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ta/groups.json b/website/common/locales/ta/groups.json index 1dc75de04a..d92f1c53f7 100755 --- a/website/common/locales/ta/groups.json +++ b/website/common/locales/ta/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/th/groups.json b/website/common/locales/th/groups.json index 79e42418b5..ec1a790a02 100755 --- a/website/common/locales/th/groups.json +++ b/website/common/locales/th/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/tl_PH/groups.json b/website/common/locales/tl_PH/groups.json index de8683261a..0568d37a65 100755 --- a/website/common/locales/tl_PH/groups.json +++ b/website/common/locales/tl_PH/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/tlh/groups.json b/website/common/locales/tlh/groups.json index f49a5ae8d9..7717970c16 100755 --- a/website/common/locales/tlh/groups.json +++ b/website/common/locales/tlh/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/ur_PK/groups.json b/website/common/locales/ur_PK/groups.json index 0593a46e22..cd305543fd 100755 --- a/website/common/locales/ur_PK/groups.json +++ b/website/common/locales/ur_PK/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/vi/groups.json b/website/common/locales/vi/groups.json index ce518bc66a..a69d64f062 100755 --- a/website/common/locales/vi/groups.json +++ b/website/common/locales/vi/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", diff --git a/website/common/locales/zh_HK/groups.json b/website/common/locales/zh_HK/groups.json index c6df339b49..7681b3b62c 100755 --- a/website/common/locales/zh_HK/groups.json +++ b/website/common/locales/zh_HK/groups.json @@ -312,7 +312,7 @@ "teamBasedTasksList": "Team-Based Task List", "teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!", "groupManagementControls": "Group Management Controls", - "groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", + "groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.", "inGameBenefits": "In-Game Benefits", "inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.", "inspireYourParty": "Inspire your party, gamify life together.", From e9e426554536ba33f30138856be5ea99828e21a7 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 2 May 2023 09:51:33 -0500 Subject: [PATCH 15/17] Squashed commit of the following: commit 00affb306655a543f5d29b3af6361e686b577a97 Author: SabreCat Date: Tue May 2 09:47:25 2023 -0500 fix(tests): account for invite limit changes commit 47661117f9fd661b8bc8f63b7cc7c8d5f8fa0fd7 Author: SabreCat Date: Mon May 1 17:39:29 2023 -0500 fix(lfp): final polish commit 6a1e5af1db0dd90be3ced7e223f53c9183a206f5 Merge: 728ed2ddad 9e0777bb42 Author: SabreCat Date: Mon May 1 16:54:12 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit 728ed2ddad7f0962d28f1ab0a271e3555b19296c Author: SabreCat Date: Thu Apr 27 16:51:06 2023 -0500 fix(lfp): loading layout and page visit event commit 8a56ab329bff922e05963e3ef78fbc26ff273924 Author: SabreCat Date: Wed Apr 26 16:54:46 2023 -0500 fix(faq): copy and style updates commit 6fd00d7f30150a1802e5a37edbb914ef120caf9a Author: SabreCat Date: Fri Apr 21 17:12:52 2023 -0500 feat(lfp): fixes, analytics, FAQ commit 4b5d7304ad7cfc5f72320b23456ed2898e53caac Author: SabreCat Date: Mon Apr 17 15:13:03 2023 -0500 fix(lfp): smol tweaks commit 9a5476a2558eb17a603f4aae1b5b2d35773be8b4 Author: SabreCat Date: Thu Apr 13 16:03:33 2023 -0500 feat(lfp): refresh button commit aa58f5018469f38a9a9d31c3bffa26bb88a8c672 Merge: bbb03d006e c8adf20804 Author: SabreCat Date: Tue Apr 11 17:44:56 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit bbb03d006e8b122bb7206bdc778a31de422167bb Author: SabreCat Date: Tue Apr 4 18:30:50 2023 -0500 fix(lint): whitespace and const commit 23683ad29a4cce0b0da061ad6c030982034c0a9c Author: SabreCat Date: Tue Apr 4 17:02:57 2023 -0500 chore(LFP): add analytics also re-fix loading state commit 4477d84f5266c87f5583368029b72153f00f0568 Author: SabreCat Date: Mon Apr 3 16:24:26 2023 -0500 fix(LFP): address issues with loading commit bdc5154f24bb5e50963376c3c0c9cc73c0b05ccc Merge: 81923eef6f 229ed46425 Author: SabreCat Date: Mon Apr 3 15:58:12 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit 81923eef6f0c627d079475a28f9d93d8e4628934 Author: SabreCat Date: Thu Mar 30 16:44:49 2023 -0500 feat(LFP): release candidate commit fe1f8939fc6b09d36cfaf0b6e5838df04e41009d Author: SabreCat Date: Wed Mar 29 17:35:54 2023 -0500 WIP(LFP): fixes commit afc361f5a9f806cbd814ad910d1274e3a6609efd Merge: d6b5cbdebc 7ede3acd01 Author: SabreCat Date: Wed Mar 29 16:24:39 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit d6b5cbdebc2829e9325ea57fb5deeccc128c1635 Author: SabreCat Date: Tue Mar 28 16:13:18 2023 -0500 WIP(LFP): change copy, add close X, fix API response commit 4274a4625862351ef0ecf33c8a3249ca5ebec7cb Author: SabreCat Date: Mon Mar 27 17:07:36 2023 -0500 fix(LFP): layout, unset when stopping commit 95abfcfa5f13c9cce6385206947a47f85b76d11d Merge: 4a360eedd8 53c536b525 Author: SabreCat Date: Mon Mar 27 16:32:46 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit 4a360eedd8b9cf41d3a0fe7a4cfaa72c5bd7bd26 Author: SabreCat Date: Thu Mar 23 16:54:49 2023 -0500 feat(LFP): completed style and infinite scroll commit bbc439d9d03c9631a450236eb33af66f0428fa50 Author: SabreCat Date: Tue Mar 21 10:40:26 2023 -0500 WIP(LFP): nicer layout, buffs fix commit 1658688597456663477ab19da61ae1b9bc85cf2a Merge: 664507434f 027e61a93e Author: SabreCat Date: Tue Mar 21 09:29:02 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit 664507434f2f76e6bf3b61cdc9e3daddb81204af Author: SabreCat Date: Fri Mar 17 17:13:08 2023 -0500 WIP(LFP): API and client adjustments commit 2f0b6f2517f9e2d634cb23ee303cfb4542e998ce Merge: 0db1704325 a16098ccda Author: SabreCat Date: Fri Mar 17 16:45:13 2023 -0500 Merge branch 'release' into sabrecat/party-seeking commit 0db1704325c3555f0b5d9c8d1dfc44177e90c093 Author: SabreCat Date: Mon Mar 13 14:48:10 2023 -0500 fix(modal): scrollbar for squashed viewports commit 733c35192e0a4e31e1bebfdd7488cfc1f7587f36 Author: SabreCat Date: Thu Mar 9 12:51:02 2023 -0600 WIP(party): seekers functional rough commit d4b854410b557db26eec6e6a26b6d174c02cee3a Merge: 7fe919825a 0b6b967753 Author: SabreCat Date: Thu Mar 9 10:07:28 2023 -0600 Merge branch 'release' into sabrecat/party-seeking commit 7fe919825abfb6d518cb93b91f5997d3831bd0b5 Author: SabreCat Date: Thu Mar 2 14:40:09 2023 -0600 feat(party): several adjustments to seeking feature commit c93900efcf925f7aaa4c4cb56b4451f19adfb1b3 Author: SabreCat Date: Wed Mar 1 20:37:11 2023 -0600 feat(party): initial Seeking API commit 8bb784daeceb14c23992a6f3af1054a900fc26c1 Merge: e19a661a21 f327795761 Author: SabreCat Date: Wed Mar 1 18:58:20 2023 -0600 Merge branch 'release' into sabrecat/party-seeking commit e19a661a2163a50307a286379bffb44201ed392e Author: SabreCat Date: Fri Feb 24 15:51:42 2023 -0600 WIP(parties): add seeking flag and modal toggle --- .../groups/POST-groups_groupId_join.test.js | 41 -- .../groups/POST-groups_invite.test.js | 48 +-- website/client/src/assets/scss/icon.scss | 21 +- website/client/src/assets/svg/sync-2.svg | 1 + .../components/groups/createPartyModal.vue | 175 ++++++--- .../client/src/components/groups/group.vue | 3 +- .../src/components/groups/lookingForParty.vue | 351 ++++++++++++++++++ .../src/components/groups/rightSidebar.vue | 6 +- .../client/src/components/header/index.vue | 10 +- website/client/src/components/header/menu.vue | 47 ++- .../header/notifications/partyInvitation.vue | 3 + website/client/src/components/static/faq.vue | 54 ++- .../src/components/static/staticWrapper.vue | 4 - website/client/src/components/ui/closeX.vue | 46 +++ website/client/src/components/userLink.vue | 15 +- website/client/src/router/index.js | 8 +- website/client/src/store/actions/party.js | 12 + website/common/locales/en/faq.json | 70 +++- website/common/locales/en/front.json | 2 +- website/common/locales/en/generic.json | 1 + website/common/locales/en/groups.json | 26 +- website/common/locales/en/npc.json | 2 +- website/common/script/content/faq.js | 53 ++- .../common/script/errors/apiErrorMessages.js | 1 + website/server/controllers/api-v3/groups.js | 131 +++++-- website/server/libs/invites/index.js | 50 ++- website/server/libs/user/index.js | 26 +- website/server/models/group.js | 4 + website/server/models/user/schema.js | 1 + 29 files changed, 999 insertions(+), 213 deletions(-) create mode 100644 website/client/src/assets/svg/sync-2.svg create mode 100644 website/client/src/components/groups/lookingForParty.vue create mode 100644 website/client/src/components/ui/closeX.vue diff --git a/test/api/v3/integration/groups/POST-groups_groupId_join.test.js b/test/api/v3/integration/groups/POST-groups_groupId_join.test.js index 92acf9023f..bbad7a8401 100644 --- a/test/api/v3/integration/groups/POST-groups_groupId_join.test.js +++ b/test/api/v3/integration/groups/POST-groups_groupId_join.test.js @@ -258,47 +258,6 @@ describe('POST /group/:groupId/join', () => { await expect(user.get('/user')).to.eventually.have.nested.property('items.quests.basilist', 2); }); - it('deletes previous party where the user was the only member', async () => { - const userToInvite = await generateUser(); - const oldParty = await userToInvite.post('/groups', { // add user to a party - name: 'Another Test Party', - type: 'party', - }); - - await expect(checkExistence('groups', oldParty._id)).to.eventually.equal(true); - await user.post(`/groups/${party._id}/invite`, { - uuids: [userToInvite._id], - }); - await userToInvite.post(`/groups/${party._id}/join`); - - await expect(user.get('/user')).to.eventually.have.nested.property('party._id', party._id); - await expect(checkExistence('groups', oldParty._id)).to.eventually.equal(false); - }); - - it('does not allow user to leave a party if a quest was active and they were the only member', async () => { - const userToInvite = await generateUser(); - const oldParty = await userToInvite.post('/groups', { // add user to a party - name: 'Another Test Party', - type: 'party', - }); - - await userToInvite.update({ - [`items.quests.${PET_QUEST}`]: 1, - }); - await userToInvite.post(`/groups/${oldParty._id}/quests/invite/${PET_QUEST}`); - - await expect(checkExistence('groups', oldParty._id)).to.eventually.equal(true); - await user.post(`/groups/${party._id}/invite`, { - uuids: [userToInvite._id], - }); - - await expect(userToInvite.post(`/groups/${party._id}/join`)).to.eventually.be.rejected.and.eql({ - code: 401, - error: 'NotAuthorized', - message: t('messageCannotLeaveWhileQuesting'), - }); - }); - it('invites joining member to active quest', async () => { await user.update({ [`items.quests.${PET_QUEST}`]: 1, diff --git a/test/api/v3/integration/groups/POST-groups_invite.test.js b/test/api/v3/integration/groups/POST-groups_invite.test.js index 02f8c5e20c..58a478be00 100644 --- a/test/api/v3/integration/groups/POST-groups_invite.test.js +++ b/test/api/v3/integration/groups/POST-groups_invite.test.js @@ -1,6 +1,7 @@ import { v4 as generateUUID } from 'uuid'; import nconf from 'nconf'; import { + createAndPopulateGroup, generateUser, generateGroup, translate as t, @@ -581,20 +582,7 @@ describe('Post /groups/:groupId/invite', () => { }); }); - it('allow inviting a user to a party if they are partying solo', async () => { - const userToInvite = await generateUser(); - await userToInvite.post('/groups', { // add user to a party - name: 'Another Test Party', - type: 'party', - }); - - await inviter.post(`/groups/${party._id}/invite`, { - uuids: [userToInvite._id], - }); - expect((await userToInvite.get('/user')).invitations.parties[0].id).to.equal(party._id); - }); - - it('allow inviting a user to 2 different parties', async () => { + it('allows inviting a user to 2 different parties', async () => { // Create another inviter const inviter2 = await generateUser(); @@ -635,29 +623,47 @@ describe('Post /groups/:groupId/invite', () => { }); expect((await userToInvite.get('/user')).invitations.parties[0].id).to.equal(party._id); }); + }); + + describe('party size limits', () => { + let party, partyLeader; + + beforeEach(async () => { + group = await createAndPopulateGroup({ + groupDetails: { + name: 'Test Party', + type: 'party', + privacy: 'private', + }, + // Generate party with 20 members + members: PARTY_LIMIT_MEMBERS - 10, + }); + party = group.group; + partyLeader = group.groupLeader; + }); it('allows 30 members in a party', async () => { const invitesToGenerate = []; - // Generate 29 users to invite (29 + leader = 30 members) - for (let i = 0; i < PARTY_LIMIT_MEMBERS - 1; i += 1) { + // Generate 10 new invites + for (let i = 1; i < 10; i += 1) { invitesToGenerate.push(generateUser()); } const generatedInvites = await Promise.all(invitesToGenerate); // Invite users - expect(await inviter.post(`/groups/${party._id}/invite`, { + expect(await partyLeader.post(`/groups/${party._id}/invite`, { uuids: generatedInvites.map(invite => invite._id), })).to.be.an('array'); }).timeout(10000); - it('does not allow 30+ members in a party', async () => { + it('does not allow >30 members in a party', async () => { const invitesToGenerate = []; - // Generate 30 users to invite (30 + leader = 31 members) - for (let i = 0; i < PARTY_LIMIT_MEMBERS; i += 1) { + // Generate 11 invites + for (let i = 1; i < 11; i += 1) { invitesToGenerate.push(generateUser()); } const generatedInvites = await Promise.all(invitesToGenerate); // Invite users - await expect(inviter.post(`/groups/${party._id}/invite`, { + await expect(partyLeader.post(`/groups/${party._id}/invite`, { uuids: generatedInvites.map(invite => invite._id), })) .to.eventually.be.rejected.and.eql({ diff --git a/website/client/src/assets/scss/icon.scss b/website/client/src/assets/scss/icon.scss index 92930f1124..3ab036333a 100644 --- a/website/client/src/assets/scss/icon.scss +++ b/website/client/src/assets/scss/icon.scss @@ -24,9 +24,9 @@ } } -.icon-16 { - width: 16px; - height: 16px; +.icon-10 { + width: 10px; + height: 10px; } .icon-12 { @@ -34,21 +34,26 @@ height: 12px; } +.icon-16 { + width: 16px; + height: 16px; +} + .icon-24 { width: 24px; height: 24px; } +.icon-32 { + width: 32px; + height: 32px; +} + .icon-48 { width: 48px; height: 48px; } -.icon-10 { - width: 10px; - height: 10px; -} - .inline { display: inline-block; } diff --git a/website/client/src/assets/svg/sync-2.svg b/website/client/src/assets/svg/sync-2.svg new file mode 100644 index 0000000000..61a77879df --- /dev/null +++ b/website/client/src/assets/svg/sync-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/client/src/components/groups/createPartyModal.vue b/website/client/src/components/groups/createPartyModal.vue index 8b00d4e06c..17c0184331 100644 --- a/website/client/src/components/groups/createPartyModal.vue +++ b/website/client/src/components/groups/createPartyModal.vue @@ -11,9 +11,12 @@
-

+

{{ $t('playInPartyTitle') }} -

+

+
-
+
-

- {{ $t('wantToJoinPartyTitle') }} -

-

-
-
- -
-
- @ -
- {{ user.auth.local.username }} -
-
-
- {{ $t('copy') }} -
-
+ {{ $t('wantToJoinPartyTitle') }} + +

+

+
+
+ {{ $t('currentlyLookingForParty') }} +
+
+
+
- @@ -107,15 +134,27 @@ cursor: pointer; } + .green-bar { + height: 32px; + font-size: 14px; + font-weight: bold; + line-height: 1.71; + text-align: center; + color: $green-1; + background-color: $green-100; + border-radius: 2px; + padding: 4px 0px 4px 0px; + } + .grey-row { background-color: $gray-700; color: #4e4a57; padding: 2em; - border-radius: 0px 0px 2px 2px; + border-radius: 0px 0px 8px 8px; } - h2 { - color: $gray-100; + h1 { + color: $purple-300; } .header-wrap { @@ -132,10 +171,6 @@ border-radius: 2px 2px 0 0; image-rendering: optimizequality; } - - h2 { - color: $purple-200; - } } .heading { @@ -182,6 +217,21 @@ margin: 0.75rem auto 0.75rem 0.25rem; } + p { + line-height: 1.71; + } + + .red-link { + cursor: pointer; + font-size: 14px; + line-height: 1.71; + text-align: center; + color: $maroon-50; + &:hover { + text-decoration: underline; + } + } + .small { color: $gray-200; margin: auto 0.5rem auto 0.25rem; @@ -192,21 +242,35 @@ import { mapState } from '@/libs/store'; import * as Analytics from '@/libs/analytics'; import notifications from '@/mixins/notifications'; +import closeX from '../ui/closeX'; import copyIcon from '@/assets/svg/copy.svg'; export default { + components: { + closeX, + }, mixins: [notifications], data () { return { icons: Object.freeze({ copy: copyIcon, }), + seeking: false, }; }, computed: { ...mapState({ user: 'user.data' }), }, + mounted () { + this.seeking = Boolean(this.user.party.seeking); + Analytics.track({ + eventName: 'Start a Party button', + eventAction: 'Start a Party button', + eventCategory: 'behavior', + hitType: 'event', + }, { trackOnClient: true }); + }, methods: { async createParty () { const group = { @@ -223,7 +287,10 @@ export default { }); this.$root.$emit('bv::hide::modal', 'create-party-modal'); - this.$router.push('/party'); + await this.$router.push('/party'); + }, + close () { + this.$root.$emit('bv::hide::modal', 'create-party-modal'); }, copyUsername () { if (navigator.clipboard) { @@ -238,6 +305,12 @@ export default { } this.text(this.$t('usernameCopied')); }, + seekParty () { + this.$store.dispatch('user:set', { + 'party.seeking': !this.user.party.seeking ? new Date() : null, + }); + this.seeking = !this.seeking; + }, }, }; diff --git a/website/client/src/components/groups/group.vue b/website/client/src/components/groups/group.vue index 85dbf296af..a238ef5664 100644 --- a/website/client/src/components/groups/group.vue +++ b/website/client/src/components/groups/group.vue @@ -542,7 +542,8 @@ export default { await this.$store.dispatch('guilds:leave', data); if (this.isParty) { - this.$router.push({ name: 'tasks' }); + await this.$router.push({ name: 'tasks' }); + window.location.reload(true); } }, upgradeGroup () { diff --git a/website/client/src/components/groups/lookingForParty.vue b/website/client/src/components/groups/lookingForParty.vue new file mode 100644 index 0000000000..eda06f5759 --- /dev/null +++ b/website/client/src/components/groups/lookingForParty.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/website/client/src/components/groups/rightSidebar.vue b/website/client/src/components/groups/rightSidebar.vue index f5eafdcaf6..cab95cea2e 100644 --- a/website/client/src/components/groups/rightSidebar.vue +++ b/website/client/src/components/groups/rightSidebar.vue @@ -2,7 +2,7 @@