diff --git a/website/client/src/assets/scss/shops.scss b/website/client/src/assets/scss/shops.scss index afcb8353a4..7a8596cadd 100644 --- a/website/client/src/assets/scss/shops.scss +++ b/website/client/src/assets/scss/shops.scss @@ -46,13 +46,11 @@ .background { background-repeat: repeat-x; - + height:216px; width: 100%; position: absolute; - top: 0; left: 0; - display: flex; flex-direction: column; justify-content: center; @@ -67,6 +65,13 @@ flex-direction: column; } + .shop-message { + position: relative; + height: 76px; + margin: 71px auto; + width: 240px; + } + .npc { position: absolute; left: 0; diff --git a/website/client/src/components/shops/timeTravelers/index.vue b/website/client/src/components/shops/timeTravelers/index.vue index ce0d4aac03..e31597c877 100644 --- a/website/client/src/components/shops/timeTravelers/index.vue +++ b/website/client/src/components/shops/timeTravelers/index.vue @@ -41,30 +41,58 @@
-
+
+
+
- +
@@ -163,6 +191,7 @@ import _throttle from 'lodash/throttle'; import _groupBy from 'lodash/groupBy'; import _map from 'lodash/map'; import _find from 'lodash/find'; +import moment from 'moment'; import isPinned from '@/../../common/script/libs/isPinned'; import shops from '@/../../common/script/libs/shops'; import { mapState } from '@/libs/store'; @@ -233,15 +262,18 @@ export default { userItems: 'user.data.items', currentEventList: 'worldState.data.currentEventList', }), - - closed () { - return this.user.purchased.plan.consecutive.trinkets === 0; + isSubscribed () { + const now = new Date(); + const { plan } = this.user.purchased; + return plan && plan.customerId + && (!plan.dateTerminated || moment(plan.dateTerminated).isAfter(now)); + }, + hasTrinket () { + return this.user.purchased.plan.consecutive.trinkets > 0; }, - shop () { return shops.getTimeTravelersShop(this.user); }, - categories () { const apiCategories = this.shop.categories; @@ -302,10 +334,8 @@ export default { } }); this.currentEvent = _find(this.currentEventList, event => Boolean(['winter', 'spring', 'summer', 'fall'].includes(event.season))); - if (!this.currentEvent || !this.currentEvent.season || this.currentEvent.season === 'thanksgiving' || this.closed) { + if (!this.currentEvent || !this.currentEvent.season || this.currentEvent.season === 'thanksgiving') { this.imageURLs.background = 'url(/static/npc/normal/time_travelers_background.png)'; - this.imageURLs.npc = this.closed ? 'url(/static/npc/normal/time_travelers_closed_banner.png)' - : 'url(/static/npc/normal/time_travelers_open_banner.png)'; } else { this.imageURLs.background = `url(/static/npc/${this.currentEvent.season}/time_travelers_background.png)`; this.imageURLs.npc = `url(/static/npc/${this.currentEvent.season}/time_travelers_open_banner.png)`; diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index f4eba78f95..eb4fc803bd 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -32,7 +32,7 @@ "subGemName": "Subscriber Gems", "maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!", "timeTravelers": "Time Travelers", - "timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.", + "timeTravelersPopoverNoSubMobile": "Subscribers receive a rare Mystic Hourglass every month to use in the Time Travelers Shop!", "timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.", "mysticHourglassNeededNoSub": "This item requires a Mystic Hourglass. You earn Mystic Hourglasses by being a Habitica subscriber.", "mysterySetNotFound": "Mystery set not found, or set already owned.",