From cc8d3a9f36544d132823a16fc9cdbdc6082cd06e Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 3 Oct 2019 14:04:02 -0500 Subject: [PATCH 1/9] chore(event): enable Sparkles --- .../sprites/spritesmith-largeSprites-0.css | 18 ++++++++-- .../sprites/spritesmith-largeSprites-0.png | Bin 51690 -> 72660 bytes .../script/libs/shops-seasonal.config.js | 1 + .../promo_costume_achievement.png | Bin 0 -> 3931 bytes .../promo_spooky_sparkles.png | Bin 0 -> 19240 bytes website/server/controllers/api-v3/news.js | 33 +++++++----------- 6 files changed, 29 insertions(+), 23 deletions(-) create mode 100644 website/raw_sprites/spritesmith_large/promo_costume_achievement.png create mode 100644 website/raw_sprites/spritesmith_large/promo_spooky_sparkles.png diff --git a/website/client/assets/css/sprites/spritesmith-largeSprites-0.css b/website/client/assets/css/sprites/spritesmith-largeSprites-0.css index 180305a0dc..2102e7541f 100644 --- a/website/client/assets/css/sprites/spritesmith-largeSprites-0.css +++ b/website/client/assets/css/sprites/spritesmith-largeSprites-0.css @@ -4,9 +4,15 @@ width: 423px; height: 147px; } +.promo_costume_achievement { + background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); + background-position: -734px 0px; + width: 144px; + height: 156px; +} .promo_desert_pet_achievements { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -163px -486px; + background-position: 0px -634px; width: 204px; height: 102px; } @@ -30,11 +36,17 @@ } .promo_seasonal_shop_fall { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: 0px -486px; + background-position: -424px -486px; width: 162px; height: 138px; } .promo_shadow_spooky_potions { + background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); + background-position: 0px -486px; + width: 423px; + height: 147px; +} +.promo_spooky_sparkles { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-position: 0px -338px; width: 423px; @@ -42,7 +54,7 @@ } .promo_take_this { background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); - background-position: -617px -338px; + background-position: -734px -157px; width: 96px; height: 69px; } diff --git a/website/client/assets/images/sprites/spritesmith-largeSprites-0.png b/website/client/assets/images/sprites/spritesmith-largeSprites-0.png index 3d9a97f96bddecfeb4eeb000ca07276028cf68fa..6a766dc132296824c2b9c85cfd9e65ce96765794 100644 GIT binary patch literal 72660 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 b?aNly)q>ZN-j@TnuQWVkaysv%-M#+@7Fy$9 literal 51690 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 diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js index bde30fb482..169ad8999f 100644 --- a/website/common/script/libs/shops-seasonal.config.js +++ b/website/common/script/libs/shops-seasonal.config.js @@ -19,6 +19,7 @@ module.exports = { }, availableSpells: [ + 'spookySparkles', ], availableQuests: [ diff --git a/website/raw_sprites/spritesmith_large/promo_costume_achievement.png b/website/raw_sprites/spritesmith_large/promo_costume_achievement.png new file mode 100644 index 0000000000000000000000000000000000000000..f3794e8c84678bea5a11123ebbde7e1423821d21 GIT binary patch literal 3931 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 WC`rKkDD3yQ1W;B~Qz(@)3;aKIt!Xp> literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith_large/promo_spooky_sparkles.png b/website/raw_sprites/spritesmith_large/promo_spooky_sparkles.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ea81f9f1a8757357c496cd93ce3173f1780fac GIT binary patch literal 19240 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 X^t&dAjD?*1v;y2Pwlb

${res.t('newStuff')}

-

10/1/2019 - ${LAST_ANNOUNCEMENT_TITLE}

+

10/3/2019 - ${LAST_ANNOUNCEMENT_TITLE}


-
-

October Backgrounds and Armoire Items!

-

We’ve added three new backgrounds to the Background Shop! Now your avatar can experiment in a Monster Maker's Workshop, ride in a magical Pumpkin Carriage, and journey across a Foggy Moor. Check them out under User Icon > Backgrounds!

-

Plus, there’s new gold-purchasable equipment in the Enchanted Armoire, including the Shadow Master Set. Better work hard on your real-life tasks to earn all the pieces! Enjoy :)

-
by GeraldThePixel, QuartzFox, Tigergurke, Vikte, Daikagaru, and SabreCat
-
-

October 2019 Resolution Success Challenge and New Take This Challenge

-

The Habitica team has launched a special official Challenge series hosted in the Official New Year's Resolution Guild. These Challenges are designed to help you build and maintain goals that are destined for success and then stick with them as the year progresses. For this month's Challenge, Staying Strong, we're focusing on boosting your motivation heading into the final quarter of the year! It has a 15 Gem prize, which will be awarded to five lucky winners on November 1st.

-

Congratulations to the winners of the September Challenge: Inkblots, Betelgeuse_aOri, timohi, IceBlueMelody, and han-!

-

The next Take This Challenge has also launched, "Check Your HP!", with a focus on tracking your mood over time. Be sure to check it out to earn additional pieces of the Take This armor set!

-

Take This is a nonprofit that seeks to inform the gamer community about mental health issues, to provide education about mental disorders and mental illness prevention, and to reduce the stigma of mental illness.

-

Congratulations to the winners of the last Take This Challenge, "It's Dangerous to Go Alone!": grand prize winner @Ukioye_Kana, and runners-up @TheReptilianCave, @Merilio, @DocBajillian, @Melodyheart, and @Melanchoii! Plus, all participants in that Challenge have received a piece of the Take This item set if they hadn't completed it already. It is located in your Rewards column.

Enjoy! -
by Doctor B, the Take This team, Lemoness, Beffymaroo, and SabreCat
-
-

Back-to-School Preparation Challenge Winners

-

The winners of the Habitica Back-to-School Preparation Challenge have been selected! Congratulations to: gils__, talklesssmilemore, Nadoko, pigmaniac1941, and French1Fry !

-

Thank you to everyone who participated! We're excited to help you pursue your goals through the new school year and beyond!

-
by Beffymaroo and SabreCat
+
+

Spooky Sparkles in the Seasonal Shop

+

There's a new Gold-purchasable item in the Seasonal Shop: Spooky Sparkles! Buy some and then cast it on your friends. I wonder what it will do?

+

If you have Spooky Sparkles cast on you, you will receive the "Alarming Friends" badge! Don't worry, any mysterious effects will wear off the next day.... or you can cancel them early by buying an Opaque Potion!

+

While you're at it, be sure to check out all the other items in the Seasonal Shop! There are lots of equipment items from the previous Fall Festivals. The Seasonal Shop will only be open until October 31st, so stock up now.

+
by Lemoness and SabreCat
+
+

Costume Challenge

+

The Community Costume Challenge has begun! Between now and October 31st, dress up as your avatar in real life and post a photo on social media to get the coveted Costume Challenge badge! Read the full rules on the Challenge page.

+

Looking for inspiration? Check out the Cosplay hashtag on our Tumblr to see past entries!

+
by Beffymaroo
`, }); From 916ebcacff72e0a5f170589a14e77f27c98d3b8a Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 3 Oct 2019 14:05:37 -0500 Subject: [PATCH 2/9] 4.116.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 270b23a247..01c7464f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.116.1", + "version": "4.116.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1c2533056c..8649936b3e 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.116.1", + "version": "4.116.2", "main": "./website/server/index.js", "dependencies": { "@google-cloud/trace-agent": "^4.0.0", From ca7399f6c19e5d6c61735fc4dee1b145f58a7a37 Mon Sep 17 00:00:00 2001 From: cheng-shiqi Date: Sun, 6 Oct 2019 23:06:02 +0800 Subject: [PATCH 3/9] Repair negative quest scrolls on (gem)purchase (#11399) * Fix: Reset negative quest scrolls number to zero on purchase(gem) * Refactor: rename website/common/script/ops/buy/buyQuest.js to website/common/script/ops/buy/buyQuestGold.js and update related files * Test: add two tests related to negative quest scrolls --- test/common/ops/buy/buyQuestGems.js | 9 +++++++++ .../ops/buy/{buyQuest.js => buyQuestGold.js} | 14 +++++++++++++- website/common/script/ops/buy/buy.js | 2 +- website/common/script/ops/buy/buyQuestGem.js | 2 +- .../ops/buy/{buyQuest.js => buyQuestGold.js} | 0 5 files changed, 24 insertions(+), 3 deletions(-) rename test/common/ops/buy/{buyQuest.js => buyQuestGold.js} (90%) rename website/common/script/ops/buy/{buyQuest.js => buyQuestGold.js} (100%) diff --git a/test/common/ops/buy/buyQuestGems.js b/test/common/ops/buy/buyQuestGems.js index 3bb19841e4..8e98e1b94d 100644 --- a/test/common/ops/buy/buyQuestGems.js +++ b/test/common/ops/buy/buyQuestGems.js @@ -49,6 +49,15 @@ describe('shared.ops.buyQuestGems', () => { buyQuest(user, {params: {key}}); + expect(user.items.quests[key]).to.equal(1); + expect(pinnedGearUtils.removeItemByPath.notCalled).to.equal(true); + }); + it('if a user\'s count of a quest scroll is negative, it will be reset to 0 before incrementing when they buy a new one.', () => { + let key = 'dustbunnies'; + user.items.quests[key] = -1; + + buyQuest(user, {params: {key}}); + expect(user.items.quests[key]).to.equal(1); expect(pinnedGearUtils.removeItemByPath.notCalled).to.equal(true); }); diff --git a/test/common/ops/buy/buyQuest.js b/test/common/ops/buy/buyQuestGold.js similarity index 90% rename from test/common/ops/buy/buyQuest.js rename to test/common/ops/buy/buyQuestGold.js index 4554b9832a..dec213aa54 100644 --- a/test/common/ops/buy/buyQuest.js +++ b/test/common/ops/buy/buyQuestGold.js @@ -1,7 +1,7 @@ import { generateUser, } from '../../../helpers/common.helper'; -import {BuyQuestWithGoldOperation} from '../../../../website/common/script/ops/buy/buyQuest'; +import {BuyQuestWithGoldOperation} from '../../../../website/common/script/ops/buy/buyQuestGold'; import { BadRequest, NotAuthorized, @@ -43,6 +43,18 @@ describe('shared.ops.buyQuest', () => { expect(analytics.track).to.be.calledOnce; }); + it('if a user\'s count of a quest scroll is negative, it will be reset to 0 before incrementing when they buy a new one.', () => { + user.stats.gp = 205; + let key = 'dilatoryDistress1'; + user.items.quests[key] = -1; + buyQuest(user, { + params: {key}, + }, analytics); + expect(user.items.quests[key]).to.equal(1); + expect(user.stats.gp).to.equal(5); + expect(analytics.track).to.be.calledOnce; + }); + it('buys a Quest scroll with the right quantity if a string is passed for quantity', () => { user.stats.gp = 1000; buyQuest(user, { diff --git a/website/common/script/ops/buy/buy.js b/website/common/script/ops/buy/buy.js index 76bec34b6e..b0cc98c053 100644 --- a/website/common/script/ops/buy/buy.js +++ b/website/common/script/ops/buy/buy.js @@ -6,7 +6,7 @@ import {BuyArmoireOperation} from './buyArmoire'; import {BuyHealthPotionOperation} from './buyHealthPotion'; import {BuyMarketGearOperation} from './buyMarketGear'; import buyMysterySet from './buyMysterySet'; -import {BuyQuestWithGoldOperation} from './buyQuest'; +import {BuyQuestWithGoldOperation} from './buyQuestGold'; import {BuySpellOperation} from './buySpell'; import purchaseOp from './purchase'; import hourglassPurchase from './hourglassPurchase'; diff --git a/website/common/script/ops/buy/buyQuestGem.js b/website/common/script/ops/buy/buyQuestGem.js index 1a1a24d90a..63ba528ce3 100644 --- a/website/common/script/ops/buy/buyQuestGem.js +++ b/website/common/script/ops/buy/buyQuestGem.js @@ -46,7 +46,7 @@ export class BuyQuestWithGemOperation extends AbstractGemItemOperation { } executeChanges (user, item, req) { - user.items.quests[item.key] = user.items.quests[item.key] || 0; + if (!user.items.quests[item.key] || user.items.quests[item.key] < 0) user.items.quests[item.key] = 0; user.items.quests[item.key] += this.quantity; if (user.markModified) user.markModified('items.quests'); diff --git a/website/common/script/ops/buy/buyQuest.js b/website/common/script/ops/buy/buyQuestGold.js similarity index 100% rename from website/common/script/ops/buy/buyQuest.js rename to website/common/script/ops/buy/buyQuestGold.js From 16c8825b2b21a64be3672b5dc28a2457e8ca488d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 6 Oct 2019 17:08:11 +0200 Subject: [PATCH 4/9] Hall Fixes (#11403) * fix(hall): correctly casts owned gear and mounts * typo --- test/api/unit/libs/items/utils.test.js | 15 ++++++++++++--- website/server/libs/items/utils.js | 12 ++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/test/api/unit/libs/items/utils.test.js b/test/api/unit/libs/items/utils.test.js index 3238fbd1dc..6a0e7ce34d 100644 --- a/test/api/unit/libs/items/utils.test.js +++ b/test/api/unit/libs/items/utils.test.js @@ -100,14 +100,23 @@ describe('Items Utils', () => { }); it('converts values for mounts paths to numbers', () => { - expect(castItemVal('items.mounts.Cactus-Base', '5')).to.equal(5); - expect(castItemVal('items.mounts.Aether-Invisible', '5')).to.equal(5); - expect(castItemVal('items.mounts.Aether-Invalid', '5')).to.equal(5); + expect(castItemVal('items.mounts.Cactus-Base', 'true')).to.equal(true); + expect(castItemVal('items.mounts.Aether-Invisible', 'false')).to.equal(false); + expect(castItemVal('items.mounts.Aether-Invalid', 'true')).to.equal(true); + expect(castItemVal('items.mounts.Aether-Invalid', 'truish')).to.equal(true); + expect(castItemVal('items.mounts.Aether-Invalid', 0)).to.equal(false); }); it('converts values for quests paths to numbers', () => { expect(castItemVal('items.quests.atom3', '5')).to.equal(5); expect(castItemVal('items.quests.invalid', '5')).to.equal(5); }); + + it('converts values for owned gear', () => { + expect(castItemVal('items.gear.owned.shield_warrior_0', 'true')).to.equal(true); + expect(castItemVal('items.gear.owned.invalid', 'false')).to.equal(false); + expect(castItemVal('items.gear.owned.invalid', 'thruthy')).to.equal(true); + expect(castItemVal('items.gear.owned.invalid', 0)).to.equal(false); + }); }); }); diff --git a/website/server/libs/items/utils.js b/website/server/libs/items/utils.js index 308bfcc8a7..cfa2b19bc2 100644 --- a/website/server/libs/items/utils.js +++ b/website/server/libs/items/utils.js @@ -60,18 +60,26 @@ export function validateItemPath (itemPath) { // value to the correct format. // Example a numeric string like "5" applied to a food item (expecting an interger) // will be converted to the number 5 -// TODO cast the correct value for `items.gear.owned` export function castItemVal (itemPath, itemVal) { if ( itemPath.indexOf('items.pets') === 0 || itemPath.indexOf('items.eggs') === 0 || itemPath.indexOf('items.hatchingPotions') === 0 || itemPath.indexOf('items.food') === 0 || - itemPath.indexOf('items.mounts') === 0 || itemPath.indexOf('items.quests') === 0 ) { return Number(itemVal); } + if ( + itemPath.indexOf('items.mounts') === 0 || + itemPath.indexOf('items.gear.owned') === 0 + ) { + if (itemVal === 'true') return true; + if (itemVal === 'false') return false; + + return Boolean(itemVal); + } + return itemVal; } \ No newline at end of file From e1246ff99f92e26d5c92da4a486df79b128fce7c Mon Sep 17 00:00:00 2001 From: Mark Kop <16388408+Markkop@users.noreply.github.com> Date: Sun, 6 Oct 2019 12:49:51 -0300 Subject: [PATCH 5/9] fix(chat): change class name because of active route (#11405) --- website/client/components/chat/chatCard.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/client/components/chat/chatCard.vue b/website/client/components/chat/chatCard.vue index 1fbc5220ac..b4daaf2ef7 100644 --- a/website/client/components/chat/chatCard.vue +++ b/website/client/components/chat/chatCard.vue @@ -26,10 +26,10 @@ div .svg-icon(v-html="icons.delete", v-once) div(v-once) {{$t('delete')}} .ml-auto.d-flex(v-b-tooltip="{title: likeTooltip(msg.likes[user._id])}", v-if='!inbox') - .action.d-flex.align-items-center.mr-0(@click='like()', v-if='likeCount > 0', :class='{active: msg.likes[user._id]}') + .action.d-flex.align-items-center.mr-0(@click='like()', v-if='likeCount > 0', :class='{activeLike: msg.likes[user._id]}') .svg-icon(v-html="icons.liked", :title='$t("liked")') | +{{ likeCount }} - .action.d-flex.align-items-center.mr-0(@click='like()', v-if='likeCount === 0', :class='{active: msg.likes[user._id]}') + .action.d-flex.align-items-center.mr-0(@click='like()', v-if='likeCount === 0', :class='{activeLike: msg.likes[user._id]}') .svg-icon(v-html="icons.like", :title='$t("like")') span(v-if='!msg.likes[user._id] && !inbox') {{ $t('like') }} @@ -106,7 +106,7 @@ div } } - .active { + .activeLike { color: $purple-300; .svg-icon { From 85eab76a717e68bcd7d69fafe65df644f869db29 Mon Sep 17 00:00:00 2001 From: citrusella Date: Sun, 6 Oct 2019 11:58:28 -0400 Subject: [PATCH 6/9] fix dark-on-dark in quest modal tooltip (#11397) --- website/client/components/shops/quests/questInfo.vue | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/website/client/components/shops/quests/questInfo.vue b/website/client/components/shops/quests/questInfo.vue index 86c488dd8b..fb5eab4924 100644 --- a/website/client/components/shops/quests/questInfo.vue +++ b/website/client/components/shops/quests/questInfo.vue @@ -77,6 +77,13 @@ dt { } } +// popover used in quest selection modal +.popover-body { + dt { + color: inherit; + } +} + // making sure the star-colors always correct .star { fill: #ffb445; From 5b57d91a9b66b0cae015084d8f152283b356e51d Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sun, 6 Oct 2019 19:41:39 +0300 Subject: [PATCH 7/9] Fix: Antidotes to Avatar Transformation Items should be added to Rewards by API (#11353) * Fix: moved debuffPotions from vue component - Move logic of choosing proper debuf potion from vue component to website commons - introduce new function to get debuffSpellItems * Fix: move debuffPotions to server * Refactoring: move setting of debuff potion to func * Fix: sanity * Refactoring & Tests: - Create test case for get and set DebuffPotionItems functions - Fix setDebuffPotionItems function to not create duplicated debuff items - Make debuff potion type of items unpinnable - Move list of debuffs to constant to reuse it in tests and functions * Fix: typo in test describe * Fix: translation of unpin * Fix: setDebuffPotionItems on cron buffs reset * Fix: use full path for debuff potions --- .../user/GET-user_toggle-pinned-item.test.js | 2 +- test/common/libs/getDebuffPotionItems.test.js | 47 ++++++++++++++++ test/common/libs/setDebuffPotionItems.test.js | 53 +++++++++++++++++++ website/client/components/tasks/column.vue | 21 -------- website/common/locales/en/npc.json | 2 +- website/common/script/constants.js | 7 +++ website/common/script/content/spells.js | 7 +++ website/common/script/index.js | 6 +++ .../script/libs/getDebuffPotionItems.js | 22 ++++++++ website/common/script/libs/getItemInfo.js | 19 +++++++ .../script/libs/setDebuffPotionItems.js | 30 +++++++++++ website/common/script/ops/pinnedGearUtils.js | 5 +- website/server/libs/cron.js | 2 + website/server/libs/spells.js | 26 +++++---- 14 files changed, 214 insertions(+), 35 deletions(-) create mode 100644 test/common/libs/getDebuffPotionItems.test.js create mode 100644 test/common/libs/setDebuffPotionItems.test.js create mode 100644 website/common/script/libs/getDebuffPotionItems.js create mode 100644 website/common/script/libs/setDebuffPotionItems.js diff --git a/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js b/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js index c958c4f979..a183cdf9e1 100644 --- a/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js +++ b/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js @@ -15,7 +15,7 @@ describe('GET /user/toggle-pinned-item', () => { .to.eventually.be.rejected.and.eql({ code: 400, error: 'BadRequest', - message: t('cannotUnpinArmoirPotion'), + message: t('cannotUnpinItem'), }); }); diff --git a/test/common/libs/getDebuffPotionItems.test.js b/test/common/libs/getDebuffPotionItems.test.js new file mode 100644 index 0000000000..cc7520db0c --- /dev/null +++ b/test/common/libs/getDebuffPotionItems.test.js @@ -0,0 +1,47 @@ + +import { + generateUser, +} from '../../helpers/common.helper'; + +import getDebuffPotionItems from '../../../website/common/script/libs/getDebuffPotionItems'; +import { TRANSFORMATION_DEBUFFS_LIST } from '../../../website/common/script/constants'; + +describe('getDebuffPotionItems', () => { + let user; + + beforeEach(() => { + user = generateUser(); + }); + + for (let key in TRANSFORMATION_DEBUFFS_LIST) { + const debuff = TRANSFORMATION_DEBUFFS_LIST[key]; + // Here we itterate whole object to dynamicaly create test suites as it described in dock of mocha + // https://mochajs.org/#dynamically-generating-tests + // That's why we have eslint-disable here + // eslint-disable-next-line no-loop-func + it(`Should return the ${debuff} on ${key} buff`, () => { + user.stats.buffs[key] = true; + + let result = getDebuffPotionItems(user); + + expect(result).to.be.an('array').that.deep.includes({path: `spells.special.${debuff}`, type: 'debuffPotion'}); + }); + } + + it('Should return all debuff potions for all buffs', () => { + user.stats.buffs.seafoam = true; + user.stats.buffs.spookySparkles = true; + user.stats.buffs.snowball = true; + user.stats.buffs.shinySeed = true; + + + let result = getDebuffPotionItems(user); + + expect(result).to.be.an('array').that.deep.include.members([ + {path: 'spells.special.sand', type: 'debuffPotion'}, + {path: 'spells.special.petalFreePotion', type: 'debuffPotion'}, + {path: 'spells.special.salt', type: 'debuffPotion'}, + {path: 'spells.special.opaquePotion', type: 'debuffPotion'}, + ]); + }); +}); diff --git a/test/common/libs/setDebuffPotionItems.test.js b/test/common/libs/setDebuffPotionItems.test.js new file mode 100644 index 0000000000..f3313b85b0 --- /dev/null +++ b/test/common/libs/setDebuffPotionItems.test.js @@ -0,0 +1,53 @@ + +import { + generateUser, +} from '../../helpers/common.helper'; + +import setDebuffPotionItems from '../../../website/common/script/libs/setDebuffPotionItems'; + +describe('setDebuffPotionItems', () => { + let user; + + beforeEach(() => { + user = generateUser(); + }); + + it('Should push the debuff item to pinned items of user', () => { + user.stats.buffs.spookySparkles = true; + const previousPinnedItemsLength = user.pinnedItems.length; + + let result = setDebuffPotionItems(user); + + expect(result.pinnedItems.length).to.be.greaterThan(previousPinnedItemsLength); + }); + + it('Shouldn\'t create duplicate of already added debuff potion', () => { + user.stats.buffs.spookySparkles = true; + + const firstSetResult = [...setDebuffPotionItems(user).pinnedItems]; + const secondSetResult = [...setDebuffPotionItems(user).pinnedItems]; + + + expect(firstSetResult).to.be.deep.equal(secondSetResult); + }); + + it('Should remove all debuff items from pinnedItems of the user if user have no buffs', () => { + user.stats.buffs.seafoam = true; + user.stats.buffs.spookySparkles = true; + user.stats.buffs.snowball = true; + user.stats.buffs.shinySeed = true; + + const firstSetResult = [...setDebuffPotionItems(user).pinnedItems]; + + expect(firstSetResult).to.have.lengthOf(4); + + user.stats.buffs.seafoam = false; + user.stats.buffs.spookySparkles = false; + user.stats.buffs.snowball = false; + user.stats.buffs.shinySeed = false; + + const secondSetResult = [...setDebuffPotionItems(user).pinnedItems]; + + expect(secondSetResult).to.have.lengthOf(0); + }); +}); diff --git a/website/client/components/tasks/column.vue b/website/client/components/tasks/column.vue index ef5faa49de..95cc8499f3 100644 --- a/website/client/components/tasks/column.vue +++ b/website/client/components/tasks/column.vue @@ -273,7 +273,6 @@ import BuyQuestModal from 'client/components/shops/quests/buyQuestModal.vue'; import notifications from 'client/mixins/notifications'; import { shouldDo } from 'common/script/cron'; import inAppRewards from 'common/script/libs/inAppRewards'; -import spells from 'common/script/content/spells'; import taskDefaults from 'common/script/libs/taskDefaults'; import { @@ -383,26 +382,6 @@ export default { let watchRefresh = this.forceRefresh; // eslint-disable-line let rewards = inAppRewards(this.user); - // Add season rewards if user is affected - // @TODO: Add buff conditional - const seasonalSkills = { - snowball: 'salt', - spookySparkles: 'opaquePotion', - shinySeed: 'petalFreePotion', - seafoam: 'sand', - }; - - for (let key in seasonalSkills) { - if (this.getUserBuffs(key)) { - let debuff = seasonalSkills[key]; - let item = Object.assign({}, spells.special[debuff]); - item.text = item.text(); - item.notes = item.notes(); - item.class = `shop_${key}`; - rewards.push(item); - } - } - return rewards; }, hasRewardsList () { diff --git a/website/common/locales/en/npc.json b/website/common/locales/en/npc.json index ed1355d562..41dcbf3016 100644 --- a/website/common/locales/en/npc.json +++ b/website/common/locales/en/npc.json @@ -76,7 +76,7 @@ "wrongItemType": "The item type \"<%= type %>\" is not valid.", "wrongItemPath": "The item path \"<%= path %>\" is not valid.", "unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.", - "cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.", + "cannotUnpinItem": "This item cannot be unpinned.", "purchasedItem": "You bought <%= itemName %>", "ian": "Ian", diff --git a/website/common/script/constants.js b/website/common/script/constants.js index 8985bea89e..262596bf87 100644 --- a/website/common/script/constants.js +++ b/website/common/script/constants.js @@ -23,3 +23,10 @@ export const SUPPORTED_SOCIAL_NETWORKS = [ export const GUILDS_PER_PAGE = 30; // number of guilds to return per page when using pagination export const PARTY_LIMIT_MEMBERS = 30; + +export const TRANSFORMATION_DEBUFFS_LIST = { + snowball: 'salt', + spookySparkles: 'opaquePotion', + shinySeed: 'petalFreePotion', + seafoam: 'sand', +}; diff --git a/website/common/script/content/spells.js b/website/common/script/content/spells.js index 58d69d3755..d17e708730 100644 --- a/website/common/script/content/spells.js +++ b/website/common/script/content/spells.js @@ -289,6 +289,8 @@ spells.special = { cast (user) { user.stats.buffs.snowball = false; user.stats.gp -= 5; + // Remove antidote from pinned items + user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.salt')); }, }, spookySparkles: { @@ -320,6 +322,8 @@ spells.special = { cast (user) { user.stats.buffs.spookySparkles = false; user.stats.gp -= 5; + // Remove antidote from pinned items + user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.opaquePotion')); }, }, shinySeed: { @@ -351,6 +355,8 @@ spells.special = { cast (user) { user.stats.buffs.shinySeed = false; user.stats.gp -= 5; + // Remove antidote from pinned items + user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.petalFreePotion')); }, }, seafoam: { @@ -382,6 +388,7 @@ spells.special = { cast (user) { user.stats.buffs.seafoam = false; user.stats.gp -= 5; + user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.sand')); }, }, nye: { diff --git a/website/common/script/index.js b/website/common/script/index.js index b636c94bc2..ea552db6a0 100644 --- a/website/common/script/index.js +++ b/website/common/script/index.js @@ -77,6 +77,12 @@ api.updateStore = updateStore; import inAppRewards from './libs/inAppRewards'; api.inAppRewards = inAppRewards; +import setDebuffPotionItems from './libs/setDebuffPotionItems'; +api.setDebuffPotionItems = setDebuffPotionItems; + +import getDebuffPotionItems from './libs/getDebuffPotionItems'; +api.getDebuffPotionItems = getDebuffPotionItems; + import uuid from './libs/uuid'; api.uuid = uuid; diff --git a/website/common/script/libs/getDebuffPotionItems.js b/website/common/script/libs/getDebuffPotionItems.js new file mode 100644 index 0000000000..8417f437e9 --- /dev/null +++ b/website/common/script/libs/getDebuffPotionItems.js @@ -0,0 +1,22 @@ +import { TRANSFORMATION_DEBUFFS_LIST } from '../constants'; + +module.exports = function getDebuffPotionItems (user) { + const items = []; + const userBuffs = user.stats.buffs; + + if (user) { + for (let key in TRANSFORMATION_DEBUFFS_LIST) { + if (userBuffs[key]) { + let debuff = TRANSFORMATION_DEBUFFS_LIST[key]; + const item = { + path: `spells.special.${debuff}`, + type: 'debuffPotion', + }; + items.push(item); + } + } + + + return items; + } +}; diff --git a/website/common/script/libs/getItemInfo.js b/website/common/script/libs/getItemInfo.js index 85fac7ef65..d71b99f0d1 100644 --- a/website/common/script/libs/getItemInfo.js +++ b/website/common/script/libs/getItemInfo.js @@ -177,6 +177,25 @@ module.exports = function getItemInfo (user, type, item, officialPinnedItems, la pinType: 'seasonalSpell', }; break; + case 'debuffPotion': + itemInfo = { + key: item.key, + mana: item.mana, + cast: item.cast, + immediateUse: item.immediateUse, + target: item.target, + text: item.text(language), + notes: item.notes(language), + value: item.value, + type: 'debuffPotion', + currency: 'gold', + locked: false, + purchaseType: 'debuffPotion', + class: `inventory_special_${item.key}`, + path: `spells.special.${item.key}`, + pinType: 'debuffPotion', + }; + break; case 'seasonalQuest': itemInfo = { key: item.key, diff --git a/website/common/script/libs/setDebuffPotionItems.js b/website/common/script/libs/setDebuffPotionItems.js new file mode 100644 index 0000000000..5386698252 --- /dev/null +++ b/website/common/script/libs/setDebuffPotionItems.js @@ -0,0 +1,30 @@ +import getDebuffPotionItems from './getDebuffPotionItems'; + + +module.exports = function setDebuffPotionItems (user) { + const debuffPotionItems = getDebuffPotionItems(user); + + if (debuffPotionItems.length) { + let isPresent = false; + const isUserHaveDebuffInPinnedItems = user.pinnedItems.find(pinnedItem => { + debuffPotionItems.forEach(debuffPotion => { + if (!isPresent) { + isPresent = debuffPotion.path === pinnedItem.path; + } + }); + return isPresent; + }); + + if (!isUserHaveDebuffInPinnedItems) { + user.pinnedItems.push(...debuffPotionItems); + } + } else { + user.pinnedItems = user.pinnedItems.filter(item => { + return item.type !== 'debuffPotion'; + }); + } + + return user; +}; + + diff --git a/website/common/script/ops/pinnedGearUtils.js b/website/common/script/ops/pinnedGearUtils.js index e3deed562c..23dd66a9c2 100644 --- a/website/common/script/ops/pinnedGearUtils.js +++ b/website/common/script/ops/pinnedGearUtils.js @@ -146,8 +146,9 @@ function togglePinnedItem (user, {item, type, path}, req = {}) { } - if (path === 'armoire' || path === 'potion') { - throw new BadRequest(i18n.t('cannotUnpinArmoirPotion', req.language)); + if (path === 'armoire' || path === 'potion' || type === 'debuffPotion') { + // @TODO: take into considertation debuffPotion type in message + throw new BadRequest(i18n.t('cannotUnpinItem', req.language)); } const isOfficialPinned = pathExistsInArray(officialPinnedItems, path) !== -1; diff --git a/website/server/libs/cron.js b/website/server/libs/cron.js index 2e01b1a917..83e84e8ffa 100644 --- a/website/server/libs/cron.js +++ b/website/server/libs/cron.js @@ -456,6 +456,8 @@ export function cron (options = {}) { user.stats.buffs = _.cloneDeep(CLEAR_BUFFS); } + common.setDebuffPotionItems(user); + // Add 10 MP, or 10% of max MP if that'd be more. Perform this after Perfect Day for maximum benefit // Adjust for fraction of dailies completed if (!user.preferences.sleep) { diff --git a/website/server/libs/spells.js b/website/server/libs/spells.js index 8c46fcb1ab..810366ca46 100644 --- a/website/server/libs/spells.js +++ b/website/server/libs/spells.js @@ -68,6 +68,9 @@ async function castSelfSpell (req, user, spell, quantity = 1) { for (let i = 0; i < quantity; i += 1) { spell.cast(user, null, req); } + + common.setDebuffPotionItems(user); + await user.save(); } @@ -94,34 +97,37 @@ async function castPartySpell (req, party, partyMembers, user, spell, quantity = return partyMembers; } -async function castUserSpell (res, req, party, partyMembers, targetId, user, spell, quantity = 1) { +async function castUserSpell (res, req, party, partyMember, targetId, user, spell, quantity = 1) { if (!party && (!targetId || user._id === targetId)) { - partyMembers = user; + partyMember = user; } else { if (!targetId) throw new BadRequest(res.t('targetIdUUID')); if (!party) throw new NotFound(res.t('partyNotFound')); - partyMembers = await User + partyMember = await User .findOne({_id: targetId, 'party._id': party._id}) - .select(partyMembersFields) + // We need all fields due to adding debuf spell to pinned items of target of the spell + // .select(partyMembersFields) .exec(); } - if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId})); + if (!partyMember) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId})); for (let i = 0; i < quantity; i += 1) { - spell.cast(user, partyMembers, req); + spell.cast(user, partyMember, req); } - if (partyMembers !== user) { + common.setDebuffPotionItems(partyMember); + + if (partyMember !== user) { await Promise.all([ user.save(), - partyMembers.save(), + partyMember.save(), ]); } else { - await partyMembers.save(); // partyMembers is user + await partyMember.save(); // partyMembers is user } - return partyMembers; + return partyMember; } async function castSpell (req, res, {isV3 = false}) { From 50cae0165c21e0d1c57dff50699753277a3f4e68 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Mon, 7 Oct 2019 16:55:44 +0200 Subject: [PATCH 8/9] Revert "Fix: Antidotes to Avatar Transformation Items should be added to Rewards by API (#11353)" (#11406) This reverts commit 5b57d91a9b66b0cae015084d8f152283b356e51d. --- .../user/GET-user_toggle-pinned-item.test.js | 2 +- test/common/libs/getDebuffPotionItems.test.js | 47 ---------------- test/common/libs/setDebuffPotionItems.test.js | 53 ------------------- website/client/components/tasks/column.vue | 21 ++++++++ website/common/locales/en/npc.json | 2 +- website/common/script/constants.js | 7 --- website/common/script/content/spells.js | 7 --- website/common/script/index.js | 6 --- .../script/libs/getDebuffPotionItems.js | 22 -------- website/common/script/libs/getItemInfo.js | 19 ------- .../script/libs/setDebuffPotionItems.js | 30 ----------- website/common/script/ops/pinnedGearUtils.js | 5 +- website/server/libs/cron.js | 2 - website/server/libs/spells.js | 26 ++++----- 14 files changed, 35 insertions(+), 214 deletions(-) delete mode 100644 test/common/libs/getDebuffPotionItems.test.js delete mode 100644 test/common/libs/setDebuffPotionItems.test.js delete mode 100644 website/common/script/libs/getDebuffPotionItems.js delete mode 100644 website/common/script/libs/setDebuffPotionItems.js diff --git a/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js b/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js index a183cdf9e1..c958c4f979 100644 --- a/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js +++ b/test/api/v3/integration/user/GET-user_toggle-pinned-item.test.js @@ -15,7 +15,7 @@ describe('GET /user/toggle-pinned-item', () => { .to.eventually.be.rejected.and.eql({ code: 400, error: 'BadRequest', - message: t('cannotUnpinItem'), + message: t('cannotUnpinArmoirPotion'), }); }); diff --git a/test/common/libs/getDebuffPotionItems.test.js b/test/common/libs/getDebuffPotionItems.test.js deleted file mode 100644 index cc7520db0c..0000000000 --- a/test/common/libs/getDebuffPotionItems.test.js +++ /dev/null @@ -1,47 +0,0 @@ - -import { - generateUser, -} from '../../helpers/common.helper'; - -import getDebuffPotionItems from '../../../website/common/script/libs/getDebuffPotionItems'; -import { TRANSFORMATION_DEBUFFS_LIST } from '../../../website/common/script/constants'; - -describe('getDebuffPotionItems', () => { - let user; - - beforeEach(() => { - user = generateUser(); - }); - - for (let key in TRANSFORMATION_DEBUFFS_LIST) { - const debuff = TRANSFORMATION_DEBUFFS_LIST[key]; - // Here we itterate whole object to dynamicaly create test suites as it described in dock of mocha - // https://mochajs.org/#dynamically-generating-tests - // That's why we have eslint-disable here - // eslint-disable-next-line no-loop-func - it(`Should return the ${debuff} on ${key} buff`, () => { - user.stats.buffs[key] = true; - - let result = getDebuffPotionItems(user); - - expect(result).to.be.an('array').that.deep.includes({path: `spells.special.${debuff}`, type: 'debuffPotion'}); - }); - } - - it('Should return all debuff potions for all buffs', () => { - user.stats.buffs.seafoam = true; - user.stats.buffs.spookySparkles = true; - user.stats.buffs.snowball = true; - user.stats.buffs.shinySeed = true; - - - let result = getDebuffPotionItems(user); - - expect(result).to.be.an('array').that.deep.include.members([ - {path: 'spells.special.sand', type: 'debuffPotion'}, - {path: 'spells.special.petalFreePotion', type: 'debuffPotion'}, - {path: 'spells.special.salt', type: 'debuffPotion'}, - {path: 'spells.special.opaquePotion', type: 'debuffPotion'}, - ]); - }); -}); diff --git a/test/common/libs/setDebuffPotionItems.test.js b/test/common/libs/setDebuffPotionItems.test.js deleted file mode 100644 index f3313b85b0..0000000000 --- a/test/common/libs/setDebuffPotionItems.test.js +++ /dev/null @@ -1,53 +0,0 @@ - -import { - generateUser, -} from '../../helpers/common.helper'; - -import setDebuffPotionItems from '../../../website/common/script/libs/setDebuffPotionItems'; - -describe('setDebuffPotionItems', () => { - let user; - - beforeEach(() => { - user = generateUser(); - }); - - it('Should push the debuff item to pinned items of user', () => { - user.stats.buffs.spookySparkles = true; - const previousPinnedItemsLength = user.pinnedItems.length; - - let result = setDebuffPotionItems(user); - - expect(result.pinnedItems.length).to.be.greaterThan(previousPinnedItemsLength); - }); - - it('Shouldn\'t create duplicate of already added debuff potion', () => { - user.stats.buffs.spookySparkles = true; - - const firstSetResult = [...setDebuffPotionItems(user).pinnedItems]; - const secondSetResult = [...setDebuffPotionItems(user).pinnedItems]; - - - expect(firstSetResult).to.be.deep.equal(secondSetResult); - }); - - it('Should remove all debuff items from pinnedItems of the user if user have no buffs', () => { - user.stats.buffs.seafoam = true; - user.stats.buffs.spookySparkles = true; - user.stats.buffs.snowball = true; - user.stats.buffs.shinySeed = true; - - const firstSetResult = [...setDebuffPotionItems(user).pinnedItems]; - - expect(firstSetResult).to.have.lengthOf(4); - - user.stats.buffs.seafoam = false; - user.stats.buffs.spookySparkles = false; - user.stats.buffs.snowball = false; - user.stats.buffs.shinySeed = false; - - const secondSetResult = [...setDebuffPotionItems(user).pinnedItems]; - - expect(secondSetResult).to.have.lengthOf(0); - }); -}); diff --git a/website/client/components/tasks/column.vue b/website/client/components/tasks/column.vue index 95cc8499f3..ef5faa49de 100644 --- a/website/client/components/tasks/column.vue +++ b/website/client/components/tasks/column.vue @@ -273,6 +273,7 @@ import BuyQuestModal from 'client/components/shops/quests/buyQuestModal.vue'; import notifications from 'client/mixins/notifications'; import { shouldDo } from 'common/script/cron'; import inAppRewards from 'common/script/libs/inAppRewards'; +import spells from 'common/script/content/spells'; import taskDefaults from 'common/script/libs/taskDefaults'; import { @@ -382,6 +383,26 @@ export default { let watchRefresh = this.forceRefresh; // eslint-disable-line let rewards = inAppRewards(this.user); + // Add season rewards if user is affected + // @TODO: Add buff conditional + const seasonalSkills = { + snowball: 'salt', + spookySparkles: 'opaquePotion', + shinySeed: 'petalFreePotion', + seafoam: 'sand', + }; + + for (let key in seasonalSkills) { + if (this.getUserBuffs(key)) { + let debuff = seasonalSkills[key]; + let item = Object.assign({}, spells.special[debuff]); + item.text = item.text(); + item.notes = item.notes(); + item.class = `shop_${key}`; + rewards.push(item); + } + } + return rewards; }, hasRewardsList () { diff --git a/website/common/locales/en/npc.json b/website/common/locales/en/npc.json index 41dcbf3016..ed1355d562 100644 --- a/website/common/locales/en/npc.json +++ b/website/common/locales/en/npc.json @@ -76,7 +76,7 @@ "wrongItemType": "The item type \"<%= type %>\" is not valid.", "wrongItemPath": "The item path \"<%= path %>\" is not valid.", "unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.", - "cannotUnpinItem": "This item cannot be unpinned.", + "cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.", "purchasedItem": "You bought <%= itemName %>", "ian": "Ian", diff --git a/website/common/script/constants.js b/website/common/script/constants.js index 262596bf87..8985bea89e 100644 --- a/website/common/script/constants.js +++ b/website/common/script/constants.js @@ -23,10 +23,3 @@ export const SUPPORTED_SOCIAL_NETWORKS = [ export const GUILDS_PER_PAGE = 30; // number of guilds to return per page when using pagination export const PARTY_LIMIT_MEMBERS = 30; - -export const TRANSFORMATION_DEBUFFS_LIST = { - snowball: 'salt', - spookySparkles: 'opaquePotion', - shinySeed: 'petalFreePotion', - seafoam: 'sand', -}; diff --git a/website/common/script/content/spells.js b/website/common/script/content/spells.js index d17e708730..58d69d3755 100644 --- a/website/common/script/content/spells.js +++ b/website/common/script/content/spells.js @@ -289,8 +289,6 @@ spells.special = { cast (user) { user.stats.buffs.snowball = false; user.stats.gp -= 5; - // Remove antidote from pinned items - user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.salt')); }, }, spookySparkles: { @@ -322,8 +320,6 @@ spells.special = { cast (user) { user.stats.buffs.spookySparkles = false; user.stats.gp -= 5; - // Remove antidote from pinned items - user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.opaquePotion')); }, }, shinySeed: { @@ -355,8 +351,6 @@ spells.special = { cast (user) { user.stats.buffs.shinySeed = false; user.stats.gp -= 5; - // Remove antidote from pinned items - user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.petalFreePotion')); }, }, seafoam: { @@ -388,7 +382,6 @@ spells.special = { cast (user) { user.stats.buffs.seafoam = false; user.stats.gp -= 5; - user.pinnedItems = user.pinnedItems.filter(item => !item.path.includes('spells.special.sand')); }, }, nye: { diff --git a/website/common/script/index.js b/website/common/script/index.js index ea552db6a0..b636c94bc2 100644 --- a/website/common/script/index.js +++ b/website/common/script/index.js @@ -77,12 +77,6 @@ api.updateStore = updateStore; import inAppRewards from './libs/inAppRewards'; api.inAppRewards = inAppRewards; -import setDebuffPotionItems from './libs/setDebuffPotionItems'; -api.setDebuffPotionItems = setDebuffPotionItems; - -import getDebuffPotionItems from './libs/getDebuffPotionItems'; -api.getDebuffPotionItems = getDebuffPotionItems; - import uuid from './libs/uuid'; api.uuid = uuid; diff --git a/website/common/script/libs/getDebuffPotionItems.js b/website/common/script/libs/getDebuffPotionItems.js deleted file mode 100644 index 8417f437e9..0000000000 --- a/website/common/script/libs/getDebuffPotionItems.js +++ /dev/null @@ -1,22 +0,0 @@ -import { TRANSFORMATION_DEBUFFS_LIST } from '../constants'; - -module.exports = function getDebuffPotionItems (user) { - const items = []; - const userBuffs = user.stats.buffs; - - if (user) { - for (let key in TRANSFORMATION_DEBUFFS_LIST) { - if (userBuffs[key]) { - let debuff = TRANSFORMATION_DEBUFFS_LIST[key]; - const item = { - path: `spells.special.${debuff}`, - type: 'debuffPotion', - }; - items.push(item); - } - } - - - return items; - } -}; diff --git a/website/common/script/libs/getItemInfo.js b/website/common/script/libs/getItemInfo.js index d71b99f0d1..85fac7ef65 100644 --- a/website/common/script/libs/getItemInfo.js +++ b/website/common/script/libs/getItemInfo.js @@ -177,25 +177,6 @@ module.exports = function getItemInfo (user, type, item, officialPinnedItems, la pinType: 'seasonalSpell', }; break; - case 'debuffPotion': - itemInfo = { - key: item.key, - mana: item.mana, - cast: item.cast, - immediateUse: item.immediateUse, - target: item.target, - text: item.text(language), - notes: item.notes(language), - value: item.value, - type: 'debuffPotion', - currency: 'gold', - locked: false, - purchaseType: 'debuffPotion', - class: `inventory_special_${item.key}`, - path: `spells.special.${item.key}`, - pinType: 'debuffPotion', - }; - break; case 'seasonalQuest': itemInfo = { key: item.key, diff --git a/website/common/script/libs/setDebuffPotionItems.js b/website/common/script/libs/setDebuffPotionItems.js deleted file mode 100644 index 5386698252..0000000000 --- a/website/common/script/libs/setDebuffPotionItems.js +++ /dev/null @@ -1,30 +0,0 @@ -import getDebuffPotionItems from './getDebuffPotionItems'; - - -module.exports = function setDebuffPotionItems (user) { - const debuffPotionItems = getDebuffPotionItems(user); - - if (debuffPotionItems.length) { - let isPresent = false; - const isUserHaveDebuffInPinnedItems = user.pinnedItems.find(pinnedItem => { - debuffPotionItems.forEach(debuffPotion => { - if (!isPresent) { - isPresent = debuffPotion.path === pinnedItem.path; - } - }); - return isPresent; - }); - - if (!isUserHaveDebuffInPinnedItems) { - user.pinnedItems.push(...debuffPotionItems); - } - } else { - user.pinnedItems = user.pinnedItems.filter(item => { - return item.type !== 'debuffPotion'; - }); - } - - return user; -}; - - diff --git a/website/common/script/ops/pinnedGearUtils.js b/website/common/script/ops/pinnedGearUtils.js index 23dd66a9c2..e3deed562c 100644 --- a/website/common/script/ops/pinnedGearUtils.js +++ b/website/common/script/ops/pinnedGearUtils.js @@ -146,9 +146,8 @@ function togglePinnedItem (user, {item, type, path}, req = {}) { } - if (path === 'armoire' || path === 'potion' || type === 'debuffPotion') { - // @TODO: take into considertation debuffPotion type in message - throw new BadRequest(i18n.t('cannotUnpinItem', req.language)); + if (path === 'armoire' || path === 'potion') { + throw new BadRequest(i18n.t('cannotUnpinArmoirPotion', req.language)); } const isOfficialPinned = pathExistsInArray(officialPinnedItems, path) !== -1; diff --git a/website/server/libs/cron.js b/website/server/libs/cron.js index 83e84e8ffa..2e01b1a917 100644 --- a/website/server/libs/cron.js +++ b/website/server/libs/cron.js @@ -456,8 +456,6 @@ export function cron (options = {}) { user.stats.buffs = _.cloneDeep(CLEAR_BUFFS); } - common.setDebuffPotionItems(user); - // Add 10 MP, or 10% of max MP if that'd be more. Perform this after Perfect Day for maximum benefit // Adjust for fraction of dailies completed if (!user.preferences.sleep) { diff --git a/website/server/libs/spells.js b/website/server/libs/spells.js index 810366ca46..8c46fcb1ab 100644 --- a/website/server/libs/spells.js +++ b/website/server/libs/spells.js @@ -68,9 +68,6 @@ async function castSelfSpell (req, user, spell, quantity = 1) { for (let i = 0; i < quantity; i += 1) { spell.cast(user, null, req); } - - common.setDebuffPotionItems(user); - await user.save(); } @@ -97,37 +94,34 @@ async function castPartySpell (req, party, partyMembers, user, spell, quantity = return partyMembers; } -async function castUserSpell (res, req, party, partyMember, targetId, user, spell, quantity = 1) { +async function castUserSpell (res, req, party, partyMembers, targetId, user, spell, quantity = 1) { if (!party && (!targetId || user._id === targetId)) { - partyMember = user; + partyMembers = user; } else { if (!targetId) throw new BadRequest(res.t('targetIdUUID')); if (!party) throw new NotFound(res.t('partyNotFound')); - partyMember = await User + partyMembers = await User .findOne({_id: targetId, 'party._id': party._id}) - // We need all fields due to adding debuf spell to pinned items of target of the spell - // .select(partyMembersFields) + .select(partyMembersFields) .exec(); } - if (!partyMember) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId})); + if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId})); for (let i = 0; i < quantity; i += 1) { - spell.cast(user, partyMember, req); + spell.cast(user, partyMembers, req); } - common.setDebuffPotionItems(partyMember); - - if (partyMember !== user) { + if (partyMembers !== user) { await Promise.all([ user.save(), - partyMember.save(), + partyMembers.save(), ]); } else { - await partyMember.save(); // partyMembers is user + await partyMembers.save(); // partyMembers is user } - return partyMember; + return partyMembers; } async function castSpell (req, res, {isV3 = false}) { From 7864ba75c7596ec56ed289612e09791c7ca6477f Mon Sep 17 00:00:00 2001 From: negue Date: Mon, 7 Oct 2019 20:10:12 +0200 Subject: [PATCH 9/9] [Stlye] fix yesterdaily modal (#11352) * fix yesterdaily style * use rem * unneeded height prop * fix task-wrapper margin * fix the modal backgrounds + update package-lock --- package-lock.json | 201 +++++++++--------- website/client/app.vue | 2 +- .../components/inventory/stable/index.vue | 6 - .../client/components/yesterdailyModal.vue | 47 ++-- 4 files changed, 137 insertions(+), 119 deletions(-) diff --git a/package-lock.json b/package-lock.json index 01c7464f85..b0849733d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -385,9 +385,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "12.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", - "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==" + "version": "12.7.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", + "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==" }, "@types/q": { "version": "1.5.2", @@ -682,9 +682,9 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "qs": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", - "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", + "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==" }, "superagent": { "version": "3.8.3", @@ -2022,9 +2022,9 @@ } }, "aws-sdk": { - "version": "2.532.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.532.0.tgz", - "integrity": "sha512-+auGlLHZlcAJaJFV6kcacLteggSdN1YsalyiXoGnLhHZTBH/s9YAwHTUftYI4ifyD3fPESr/rpdceWe1m0U2Mw==", + "version": "2.536.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.536.0.tgz", + "integrity": "sha512-d91ASAgDtjP5Al8nRtdOhnS6m7XczqdmVfkyFtd7GlWJ2jy2NxQ+PI4QVp7n/74BNRSSLoyxmCqz2Ulqu3TOsQ==", "requires": { "buffer": "4.9.1", "events": "1.1.1", @@ -5273,9 +5273,9 @@ } }, "bowser": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.5.4.tgz", - "integrity": "sha512-74GGwfc2nzYD19JCiA0RwCxdq7IY5jHeEaSrrgm/5kusEuK+7UK0qDG3gyzN47c4ViNyO4osaKtZE+aSV6nlpQ==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.6.1.tgz", + "integrity": "sha512-hySGUuLhi0KetfxPZpuJOsjM0kRvCiCgPBygBkzGzJNsq/nbJmaO8QJc6xlWfeFFnMvtd/LeKkhDJGVrmVobUA==" }, "boxen": { "version": "1.3.0", @@ -5571,9 +5571,9 @@ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, "normalize-url": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.4.0.tgz", - "integrity": "sha512-R1TJlbt61ZWWfeTCjKjM67RyR5Ls8BABZPhNQ2sHCVEAUoC0B4CHakvBlx/y04x/U6oc336wyFSQwqnylcVnVw==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.4.1.tgz", + "integrity": "sha512-rjH3yRt0Ssx19mUwS0hrDUOdG9VI+oRLpLHJ7tXRdjcuQ7v7wo6qPvOZppHRrqfslTKr0L2yBhjj4UXd7c3cQg==" } } }, @@ -5656,14 +5656,14 @@ } }, "caniuse-db": { - "version": "1.0.30000996", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000996.tgz", - "integrity": "sha512-WvzxMtKe5CCBUaTVBM/EjsoFXJf6f/2s17BlWeZMhc5DSP7d9QjAZe5vdZp3T3fjxtGkJbg5W24bnRAdz9LVIw==" + "version": "1.0.30000997", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000997.tgz", + "integrity": "sha512-rK1Jo9VT5F/cJ333iLURdNXecYvVn3erJheoPAETrccJVw4w/557HfkNPADB5agHKjGuhJETf1l6lssvgbqA0Q==" }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==" + "version": "1.0.30000997", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", + "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==" }, "capture-stack-trace": { "version": "1.0.1", @@ -6003,9 +6003,9 @@ } }, "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" }, "chromedriver": { "version": "77.0.0", @@ -7885,9 +7885,9 @@ "integrity": "sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo=" }, "date-fns": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.2.1.tgz", - "integrity": "sha512-4V1i5CnTinjBvJpXTq7sDHD4NY6JPcl15112IeSNNLUWQOQ+kIuCvRGOFZMQZNvkadw8F9QTyZxz59rIRU6K+w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.3.0.tgz", + "integrity": "sha512-A8o+iXBVqQayl9Z39BHgb7m/zLOfhF7LK82t+n9Fq1adds1vaUn8ByVoADqWLe4OTc6BZYc/FdbdTwufNYqkJw==" }, "date-format": { "version": "2.1.0", @@ -8655,9 +8655,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.263", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.263.tgz", - "integrity": "sha512-VfPi+sE/1nEKOV7DWDqWSUGP7ztJG5FeqHbMEj6dBb/arKnxpOCnRXOSC6HBV6qTfK5v8CX7xWCqzN36UqG1oA==" + "version": "1.3.266", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.266.tgz", + "integrity": "sha512-UTuTZ4v8T0gLPHI7U75PXLQePWI65MTS3mckRrnLCkNljHvsutbYs+hn2Ua/RFul3Jt/L3Ht2rLP+dU/AlBfrQ==" }, "element-in-view": { "version": "0.1.0", @@ -8775,9 +8775,9 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } @@ -10436,9 +10436,9 @@ } }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "requires": { "is-glob": "^4.0.1" } @@ -10601,9 +10601,9 @@ }, "dependencies": { "schema-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz", - "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.3.0.tgz", + "integrity": "sha512-0NWOS/em29583dLzou07qWp5xoKCnvm5NiDQ+IkI/Q8xP6rm1SMvQrmHseH0RSbBe4tM+LJ7IeZTqb/dF9dTRQ==", "requires": { "ajv": "^6.10.2", "ajv-keywords": "^3.4.1" @@ -12293,9 +12293,9 @@ "dev": true }, "gtoken": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.0.0.tgz", - "integrity": "sha512-XaRCfHJxhj06LmnWNBzVTAr85NfAErq0W1oabkdqwbq3uL/QTB1kyvGog361Uu2FMG/8e3115sIy/97Rnd4GjQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.0.tgz", + "integrity": "sha512-wqyn2gf5buzEZN4QNmmiiW2i2JkEdZnL7Z/9p44RtZqgt4077m4khRgAYNuu8cBwHWCc6MsP6eDUn/KkF6jFIw==", "requires": { "gaxios": "^2.0.0", "google-p12-pem": "^2.0.0", @@ -12426,9 +12426,9 @@ }, "dependencies": { "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" } } }, @@ -12800,9 +12800,9 @@ "integrity": "sha512-T673GW3RSuM4xzYfJpp/wNPDbUG9FlNSNkQn0thII8DOpl3NphcmtmNrHrmv8hyk1fosJHkgzDfbcpJvmeq5Gw==" }, "helmet": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.0.tgz", - "integrity": "sha512-TS3GryQMPR7n/heNnGC0Cl3Ess30g8C6EtqZyylf+Y2/kF4lM8JinOR90rzIICsw4ymWTvji4OhDmqsqxkLrcg==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.1.tgz", + "integrity": "sha512-IC/54Lxvvad2YiUdgLmPlNFKLhNuG++waTF5KPYq/Feo3NNhqMFbcLAlbVkai+9q0+4uxjxGPJ9bNykG+3zZNg==", "requires": { "depd": "2.0.0", "dns-prefetch-control": "0.2.0", @@ -12811,7 +12811,7 @@ "feature-policy": "0.3.0", "frameguard": "3.1.0", "helmet-crossdomain": "0.4.0", - "helmet-csp": "2.9.1", + "helmet-csp": "2.9.2", "hide-powered-by": "1.1.0", "hpkp": "2.0.0", "hsts": "2.2.0", @@ -12834,11 +12834,11 @@ "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==" }, "helmet-csp": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.1.tgz", - "integrity": "sha512-HgdXSJ6AVyXiy5ohVGpK6L7DhjI9KVdKVB1xRoixxYKsFXFwoVqtLKgDnfe3u8FGGKf9Ml9k//C9rnncIIAmyA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.2.tgz", + "integrity": "sha512-Lt5WqNfbNjEJ6ysD4UNpVktSyjEKfU9LVJ1LaFmPfYseg/xPealPfgHhtqdAdjPDopp5zbg/VWCyp4cluMIckw==", "requires": { - "bowser": "2.5.4", + "bowser": "^2.6.1", "camelize": "1.0.0", "content-security-policy-builder": "2.1.0", "dasherize": "2.0.0" @@ -13272,9 +13272,9 @@ } }, "image-size": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.8.1.tgz", - "integrity": "sha512-X2HcWljsuWJPMTb1CGAN2+xuAAjQK5kdSzhqQXZlJBf0MpdXqfIeQCMJKYKS2OEVDwReS2zO5i7MlikWPBTotQ==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.8.2.tgz", + "integrity": "sha512-0AO8bEDtAcC+dScZmCDUvmxIYWlJ+0DQOl1BkTQYrrM3/oQORS03P0gDT7ZoElRozHlfoUxT+L2ErLFmbT5tdA==", "requires": { "queue": "6.0.1" } @@ -14876,9 +14876,9 @@ } }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "core-js": { @@ -14904,9 +14904,9 @@ "optional": true }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -15244,9 +15244,9 @@ }, "dependencies": { "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true } } @@ -16240,9 +16240,9 @@ }, "dependencies": { "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" } } }, @@ -17026,20 +17026,31 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minipass": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.6.5.tgz", - "integrity": "sha512-ewSKOPFH9blOLXx0YSE+mbrNMBFPS+11a2b03QZ+P4LVrUHW/GAlqeYC7DBknDyMWkHzrzTpDhUvy7MUxqyrPA==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.8.6.tgz", + "integrity": "sha512-lFG7d6g3+/UaFDCOtqPiKAC9zngWWsQZl1g5q6gaONqrjq61SX2xFqXMleQiFVyDpYwa018E9hmlAFY22PCb+A==", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.2.tgz", - "integrity": "sha512-hR3At21uSrsjjDTWrbu0IMLTpnkpv8IIMFDFaoz43Tmu4LkmAXfH44vNNzpTnf+OAQQCHrb91y/wc2J4x5XgSQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.1.tgz", + "integrity": "sha512-8AgjrT7C8U/HQWM+02YJHLPh4BypAhc5pFddr0nCcowNy1Hj0hmKPMq9WkjBMn0rtUg3ia30MkCexdd1pTiTIA==", "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } } }, "mixin-deep": { @@ -23624,9 +23635,9 @@ } }, "sinon": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.2.tgz", - "integrity": "sha512-pY5RY99DKelU3pjNxcWo6XqeB1S118GBcVIIdDi6V+h6hevn1izcg2xv1hTHW/sViRXU7sUOxt4wTUJ3gsW2CQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", @@ -23701,9 +23712,9 @@ "dev": true }, "smartbanner.js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/smartbanner.js/-/smartbanner.js-1.14.3.tgz", - "integrity": "sha512-sztCJyMU96IlMAYZyfb/5jsmXz7629QozKY0tJ9x39aqUbYHiWInNNm45iNwsqv9A8gASXo98LnLiay0646vWw==" + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/smartbanner.js/-/smartbanner.js-1.14.5.tgz", + "integrity": "sha512-Qw4dezZkPHbnVIOyG/BDTsm/ZDsnYZdSwPI9CL+PfRqqywh/Bk2XmWcAFLUzmDg5lGeAxhs7TrKO1+kQ4vWN9g==" }, "snapdragon": { "version": "0.8.2", @@ -24633,9 +24644,9 @@ }, "dependencies": { "qs": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", - "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", + "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==" } } }, @@ -24686,9 +24697,9 @@ } }, "qs": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", - "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", + "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==" }, "readable-stream": { "version": "3.4.0", @@ -24959,13 +24970,13 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.11.tgz", - "integrity": "sha512-iI4zh3ktLJKaDNZKZc+fUONiQrSn9HkCFzamtb7k8FFmVilHVob7QsLX/VySAW8lAviMzMbFw4QtFb4errwgYA==", + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.6.4", + "minipass": "^2.8.6", "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", @@ -27175,11 +27186,11 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==" }, "vuedraggable": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.0.tgz", - "integrity": "sha512-RgdH16k43WNoxyRcv/OarB/DZh9SY5TYthk9TS4YiHXpelD1DytEG0phLAXiXx5EhsmdH8ltSWxklGa4g1WTCw==", + "version": "2.23.1", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.1.tgz", + "integrity": "sha512-YgWnG7RC/V+nPksueT9cUGzvj7gBYqpEomazuAK5bBcImuPAeLsq0hwE5kSGItbHQpVnYdT/QX1kRR1XsjNeqw==", "requires": { - "sortablejs": "^1.9.0" + "sortablejs": "^1.10.0" } }, "vuejs-datepicker": { diff --git a/website/client/app.vue b/website/client/app.vue index 3ca879f043..7a2e7c7397 100644 --- a/website/client/app.vue +++ b/website/client/app.vue @@ -161,7 +161,7 @@ div overflow-y: scroll !important; } - .modal-backdrop.show { + .modal-backdrop { opacity: .9 !important; background-color: $purple-100 !important; } diff --git a/website/client/components/inventory/stable/index.vue b/website/client/components/inventory/stable/index.vue index e4e68ecc0e..7e4bf44de2 100644 --- a/website/client/components/inventory/stable/index.vue +++ b/website/client/components/inventory/stable/index.vue @@ -242,12 +242,6 @@ } } - - .modal-backdrop.fade.show { - background-color: $purple-50; - opacity: 0.9; - } - .last { margin-right: 0 !important; } diff --git a/website/client/components/yesterdailyModal.vue b/website/client/components/yesterdailyModal.vue index 698b98c1ec..4897133dbc 100644 --- a/website/client/components/yesterdailyModal.vue +++ b/website/client/components/yesterdailyModal.vue @@ -7,27 +7,42 @@ :no-close-on-esc="true", @hide="$emit('hide')", ) - .modal-body - h1.header-welcome.text-center {{ $t('welcomeBack') }} - p.call-to-action.text-center {{ $t('checkOffYesterDailies') }} - .tasks-list - task( - v-for="task in tasksByType.daily", - :key="task.id", - :task="task", - :isUser="true", - :dueDate="dueDate", - ) - .start-day.text-center - button.btn.btn-primary(@click='close()') {{ $t('yesterDailiesCallToAction') }} + h1.header-welcome.text-center {{ $t('welcomeBack') }} + p.call-to-action.text-center {{ $t('checkOffYesterDailies') }} + .tasks-list + task( + v-for="task in tasksByType.daily", + :key="task.id", + :task="task", + :isUser="true", + :dueDate="dueDate", + ) + .start-day.text-center + button.btn.btn-primary(@click='close()') {{ $t('yesterDailiesCallToAction') }} + +