From 9a6f8021e3969fd740668f3cc0b4008a444aabc3 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 13 Feb 2020 13:12:45 -0600 Subject: [PATCH] Subscription Page Overhaul (#11823) * WIP(settings): subscriber page improvements * WIP(subscriptions): more design build-out * fix(css): disabled button styles * fix(css): better Amazon targeting * WIP(g1g1): notif * WIP(g1g1): notif cont'd * WIP(gifting): partial modal implementation * feat(gifting): select giftee modal * fix(gifting): notification order, modal dismiss * fix(modals): correct some repops * fix(gifting): style updates * fix(modals): also clean out "prev" * refactor(modals): hide in dismiss event * fix(modals): new dismiss logic * fix(modals): new dismiss no go?? * WIP(subscription): unsubscribed state * WIP(subscription): partial subscribed * WIP(subscription): finish subscribed * feat(subscription): revised sub page RC * fix(subs): style tweaks * fix(subs): moar style tweaks --- .../client/src/assets/images/g1g1-notif.png | Bin 0 -> 41880 bytes .../client/src/assets/images/g1g1-send.png | Bin 0 -> 40732 bytes .../src/assets/images/subscriber-food.png | Bin 0 -> 5145 bytes .../client/src/assets/scss/typography.scss | 2 +- .../client/src/assets/svg/apple-pay-logo.svg | 3 + .../client/src/assets/svg/calendar-purple.svg | 8 + website/client/src/assets/svg/close-teal.svg | 5 + website/client/src/assets/svg/gift-purple.svg | 13 + .../client/src/assets/svg/google-pay-logo.svg | 10 + website/client/src/assets/svg/group.svg | 5 - .../src/assets/svg/habitica-logo-purple.svg | 7 + website/client/src/assets/svg/paypal-logo.svg | 8 + .../client/src/assets/svg/subscriber-gems.svg | 26 + .../src/assets/svg/subscriber-hourglasses.svg | 26 + website/client/src/components/header/menu.vue | 9 +- .../components/header/notifications/g1g1.vue | 95 +++ .../header/notificationsDropdown.vue | 4 +- .../src/components/header/userDropdown.vue | 6 +- .../src/components/payments/buyGemsModal.vue | 604 +++---------- .../components/payments/selectUserModal.vue | 220 +++++ .../src/components/payments/successModal.vue | 8 +- .../src/components/settings/subscription.vue | 791 ++++++++++++------ .../settings/subscriptionOptions.vue | 178 ++++ website/client/src/mixins/payments.js | 1 + website/client/src/store/actions/members.js | 6 + website/client/src/store/index.js | 3 - website/common/locales/en/groups.json | 10 +- website/common/locales/en/npc.json | 1 + website/common/locales/en/settings.json | 9 +- website/common/locales/en/subscriber.json | 37 +- website/server/models/userNotification.js | 1 + 31 files changed, 1332 insertions(+), 764 deletions(-) create mode 100644 website/client/src/assets/images/g1g1-notif.png create mode 100644 website/client/src/assets/images/g1g1-send.png create mode 100644 website/client/src/assets/images/subscriber-food.png create mode 100644 website/client/src/assets/svg/apple-pay-logo.svg create mode 100644 website/client/src/assets/svg/calendar-purple.svg create mode 100644 website/client/src/assets/svg/close-teal.svg create mode 100644 website/client/src/assets/svg/gift-purple.svg create mode 100644 website/client/src/assets/svg/google-pay-logo.svg delete mode 100644 website/client/src/assets/svg/group.svg create mode 100644 website/client/src/assets/svg/habitica-logo-purple.svg create mode 100644 website/client/src/assets/svg/paypal-logo.svg create mode 100644 website/client/src/assets/svg/subscriber-gems.svg create mode 100644 website/client/src/assets/svg/subscriber-hourglasses.svg create mode 100644 website/client/src/components/header/notifications/g1g1.vue create mode 100644 website/client/src/components/payments/selectUserModal.vue create mode 100644 website/client/src/components/settings/subscriptionOptions.vue diff --git a/website/client/src/assets/images/g1g1-notif.png b/website/client/src/assets/images/g1g1-notif.png new file mode 100644 index 0000000000000000000000000000000000000000..398b4861f37d12c7af6b5a61f09b894a97980563 GIT binary patch literal 41880 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 literal 0 HcmV?d00001 diff --git a/website/client/src/assets/images/g1g1-send.png b/website/client/src/assets/images/g1g1-send.png new file mode 100644 index 0000000000000000000000000000000000000000..b92b753402d625b8d5ea02e0ba0d599a8f24370e GIT binary patch literal 40732 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

9NuQ+fb8 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 literal 0 HcmV?d00001 diff --git a/website/client/src/assets/scss/typography.scss b/website/client/src/assets/scss/typography.scss index 9dceb3ed35..a9caa6b285 100644 --- a/website/client/src/assets/scss/typography.scss +++ b/website/client/src/assets/scss/typography.scss @@ -61,7 +61,7 @@ h3 { font-size: 16px; line-height: 1.5; color: $gray-50; - margin-bottom: 9px; + margin-bottom: 4px; } h4 { diff --git a/website/client/src/assets/svg/apple-pay-logo.svg b/website/client/src/assets/svg/apple-pay-logo.svg new file mode 100644 index 0000000000..a84fe5dd4a --- /dev/null +++ b/website/client/src/assets/svg/apple-pay-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/client/src/assets/svg/calendar-purple.svg b/website/client/src/assets/svg/calendar-purple.svg new file mode 100644 index 0000000000..337daf1535 --- /dev/null +++ b/website/client/src/assets/svg/calendar-purple.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/website/client/src/assets/svg/close-teal.svg b/website/client/src/assets/svg/close-teal.svg new file mode 100644 index 0000000000..e098940af2 --- /dev/null +++ b/website/client/src/assets/svg/close-teal.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/website/client/src/assets/svg/gift-purple.svg b/website/client/src/assets/svg/gift-purple.svg new file mode 100644 index 0000000000..42753ce9c0 --- /dev/null +++ b/website/client/src/assets/svg/gift-purple.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/website/client/src/assets/svg/google-pay-logo.svg b/website/client/src/assets/svg/google-pay-logo.svg new file mode 100644 index 0000000000..572b49dfb2 --- /dev/null +++ b/website/client/src/assets/svg/google-pay-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/website/client/src/assets/svg/group.svg b/website/client/src/assets/svg/group.svg deleted file mode 100644 index 4bfabce2e3..0000000000 --- a/website/client/src/assets/svg/group.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/website/client/src/assets/svg/habitica-logo-purple.svg b/website/client/src/assets/svg/habitica-logo-purple.svg new file mode 100644 index 0000000000..eb32b8caaf --- /dev/null +++ b/website/client/src/assets/svg/habitica-logo-purple.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/website/client/src/assets/svg/paypal-logo.svg b/website/client/src/assets/svg/paypal-logo.svg new file mode 100644 index 0000000000..e478d8a310 --- /dev/null +++ b/website/client/src/assets/svg/paypal-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/website/client/src/assets/svg/subscriber-gems.svg b/website/client/src/assets/svg/subscriber-gems.svg new file mode 100644 index 0000000000..d3d3b57558 --- /dev/null +++ b/website/client/src/assets/svg/subscriber-gems.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/client/src/assets/svg/subscriber-hourglasses.svg b/website/client/src/assets/svg/subscriber-hourglasses.svg new file mode 100644 index 0000000000..f2a1aac016 --- /dev/null +++ b/website/client/src/assets/svg/subscriber-hourglasses.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/client/src/components/header/menu.vue b/website/client/src/components/header/menu.vue index 2084768eab..6d311bdd69 100644 --- a/website/client/src/components/header/menu.vue +++ b/website/client/src/components/header/menu.vue @@ -4,6 +4,7 @@ + {{ userGems }} @@ -719,6 +720,7 @@ import notificationMenu from './notificationsDropdown'; import profileModal from '../userMenu/profileModal'; import reportFlagModal from '../chat/reportFlagModal'; import sendGemsModal from '@/components/payments/sendGemsModal'; +import selectUserModal from '@/components/payments/selectUserModal'; import sync from '@/mixins/sync'; import userDropdown from './userDropdown'; @@ -730,6 +732,7 @@ export default { profileModal, reportFlagModal, sendGemsModal, + selectUserModal, userDropdown, }, mixins: [sync], @@ -787,9 +790,7 @@ export default { openPartyModal () { this.$root.$emit('bv::show::modal', 'create-party-modal'); }, - showBuyGemsModal (startingPage) { - this.$store.state.gemModalOptions.startingPage = startingPage; - + showBuyGemsModal () { Analytics.track({ hitType: 'event', eventCategory: 'button', diff --git a/website/client/src/components/header/notifications/g1g1.vue b/website/client/src/components/header/notifications/g1g1.vue new file mode 100644 index 0000000000..8149f0aac1 --- /dev/null +++ b/website/client/src/components/header/notifications/g1g1.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/website/client/src/components/header/notificationsDropdown.vue b/website/client/src/components/header/notificationsDropdown.vue index 0b8cd95546..e98daeff4e 100644 --- a/website/client/src/components/header/notificationsDropdown.vue +++ b/website/client/src/components/header/notificationsDropdown.vue @@ -147,6 +147,7 @@ import ACHIEVEMENT_JUST_ADD_WATER from './notifications/justAddWater'; import ACHIEVEMENT_LOST_MASTERCLASSER from './notifications/lostMasterclasser'; import ACHIEVEMENT_MIND_OVER_MATTER from './notifications/mindOverMatter'; import ONBOARDING_COMPLETE from './notifications/onboardingComplete'; +import GIFT_ONE_GET_ONE from './notifications/g1g1'; import OnboardingGuide from './onboardingGuide'; export default { @@ -176,6 +177,7 @@ export default { VERIFY_USERNAME, OnboardingGuide, ONBOARDING_COMPLETE, + GIFT_ONE_GET_ONE, }, data () { return { @@ -195,7 +197,7 @@ export default { // listed in the order they should appear in the notifications panel. // NOTE: Those not listed here won't be shown in the notification panel! handledNotifications: [ - 'NEW_STUFF', 'GROUP_TASK_NEEDS_WORK', + 'NEW_STUFF', 'GIFT_ONE_GET_ONE', 'GROUP_TASK_NEEDS_WORK', 'GUILD_INVITATION', 'PARTY_INVITATION', 'CHALLENGE_INVITATION', 'QUEST_INVITATION', 'GROUP_TASK_ASSIGNED', 'GROUP_TASK_APPROVAL', 'GROUP_TASK_APPROVED', 'GROUP_TASK_CLAIMED', 'NEW_MYSTERY_ITEMS', 'CARD_RECEIVED', diff --git a/website/client/src/components/header/userDropdown.vue b/website/client/src/components/header/userDropdown.vue index a07f5ae787..fc0ae7edb5 100644 --- a/website/client/src/components/header/userDropdown.vue +++ b/website/client/src/components/header/userDropdown.vue @@ -75,7 +75,7 @@ >{{ $t('logout') }}

  • - -
    -
    -
    -

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

    -
    -
    -
    -

    {{ $t("gemsPurchaseNote") }}

    -
    -
    -
    +

    - {{ $t('gemBenefitLeadin') }} + {{ $t('subscriptionAlreadySubscribedLeadIn') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('gemBenefit1') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('gemBenefit2') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('gemBenefit3') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('gemBenefit4') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - 20 -
    -
    - {{ $t('gems') }} -
    -
    - -
    -
    -
    -

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

    -
    -
    - - - -
    -
    -
    -
    -
    - {{ $t('buyGemsSupportsDevs') }} +

    {{ $t("gemsPurchaseNote") }}

    -
    -
    -
    -

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

    +
    +

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

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{ $t('gemBenefit1') }}

    +
    -
    -
    -

    +
    +
    +
    +
    +
    +
    +
    +

    {{ $t('gemBenefit2') }}

    -
    -
    -

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

    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{ $t('gemBenefit3') }}

    +
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit1') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit2') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit3') }}

    -
    +
    +
    +
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit4') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit5') }}

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    {{ $t('subscriptionBenefit6') }}

    -
    -
    +
    +

    {{ $t('gemBenefit4') }}

    -
    +
    +
    +
    +
    +
    -
    -
    - $ - 5 - .00 -
    -
    - {{ $t('everyMonth') }} -
    -
    -

    -
    - -
    -
    -
    -
    -
    - $ - 15 - .00 -
    -
    - {{ $t('everyXMonths', {interval: 3}) }} -
    -
    -

    -

    - -
    -
    -
    -
    -
    - $ - 30 - .00 -
    -
    - {{ $t('everyXMonths', {interval: 6}) }} -
    -
    -

    -

    - -
    -
    -
    -
    -
    - $ - 48 - .00 -
    -
    - {{ $t('everyYear') }} -
    -
    -

    -

    - -
    -
    -
    -
    -

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

    -
    - -
    - - - -
    -
    -
    -
    -
    - {{ $t('subscribeSupportsDevs') }} +
    +
    + 20
    +
    + {{ $t('gems') }} +
    +
    +
    +
    +

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

    +
    +
    + + + +
    +
    +
    +
    +
    +
    + {{ $t('buyGemsSupportsDevs') }} +
    +
    @@ -522,10 +210,6 @@ font-size: 16px; } - .benefits { - font-size: 14px; - } - .bubble { width: 32px; height: 32px; @@ -579,46 +263,6 @@ height: 56px; } - .muted { - color: #c3c0c7; - } - - .nav { - font-weight: bold; - background-color: $gray-600; - } - - .nav-item { - box-sizing: border-box; - display: inline-block; - font-size: 16px; - margin: 0rem; - padding: 1rem; - width: 7.5rem; - } - - .nav-item:hover, .nav-item.active { - color: #4f2a93; - border-bottom: 4px solid $purple-300; - cursor: pointer; - } - - .spacer { - height: 4em; - } - - .subscription-price { - font-family: Roboto Condensed; - font-size: 48px; - font-weight: bold; - color: #1ca372; - } - - .superscript { - font-size: 24px; - vertical-align: super; - } - .svg-icon.check { color: #bda8ff; width: 1rem; @@ -696,9 +340,6 @@ export default { }, computed: { ...mapState({ user: 'user.data' }), - startingPageOption () { - return this.$store.state.gemModalOptions.startingPage; - }, hasSubscription () { return Boolean(this.user.purchased.plan.customerId); }, @@ -708,11 +349,6 @@ export default { >= (this.user.purchased.plan.consecutive.gemCapExtra + this.planGemLimits.convCap); }, }, - watch: { - startingPageOption () { - this.selectedPage = this.$store.state.gemModalOptions.startingPage; - }, - }, methods: { close () { this.$root.$emit('bv::hide::modal', 'buy-gems'); diff --git a/website/client/src/components/payments/selectUserModal.vue b/website/client/src/components/payments/selectUserModal.vue new file mode 100644 index 0000000000..77f76a6e8d --- /dev/null +++ b/website/client/src/components/payments/selectUserModal.vue @@ -0,0 +1,220 @@ + + + + + + + diff --git a/website/client/src/components/payments/successModal.vue b/website/client/src/components/payments/successModal.vue index c2c04c410f..8d33203d8d 100644 --- a/website/client/src/components/payments/successModal.vue +++ b/website/client/src/components/payments/successModal.vue @@ -2,7 +2,6 @@ @@ -102,6 +101,10 @@ diff --git a/website/client/src/components/settings/subscriptionOptions.vue b/website/client/src/components/settings/subscriptionOptions.vue new file mode 100644 index 0000000000..a6f6b9deab --- /dev/null +++ b/website/client/src/components/settings/subscriptionOptions.vue @@ -0,0 +1,178 @@ + + + + + + + + diff --git a/website/client/src/mixins/payments.js b/website/client/src/mixins/payments.js index a1e900d47a..8d812aa080 100644 --- a/website/client/src/mixins/payments.js +++ b/website/client/src/mixins/payments.js @@ -284,6 +284,7 @@ export default { this.amazonPayments.group = null; }, cancelSubscriptionConfirm (config) { + if (config.canCancel === false) return; this.$root.$emit('habitica:cancel-subscription-confirm', config); }, async cancelSubscription (config) { diff --git a/website/client/src/store/actions/members.js b/website/client/src/store/actions/members.js index a9e80d55c3..d35e979043 100644 --- a/website/client/src/store/actions/members.js +++ b/website/client/src/store/actions/members.js @@ -31,6 +31,12 @@ export async function fetchMember (store, payload) { return response; } +export async function fetchMemberByUsername (store, payload) { + const url = `${apiv4Prefix}/members/username/${payload.username}`; + const response = await axios.get(url); + return response; +} + export async function getGroupInvites (store, payload) { let url = `${apiv4Prefix}/groups/${payload.groupId}/invites`; if (payload.includeAllPublicFields) { diff --git a/website/client/src/store/index.js b/website/client/src/store/index.js index 21bd4d58d8..1fe936a89d 100644 --- a/website/client/src/store/index.js +++ b/website/client/src/store/index.js @@ -114,9 +114,6 @@ export default function () { profileOptions: { startingPage: '', }, - gemModalOptions: { - startingPage: '', - }, rageModalOptions: { npc: '', }, diff --git a/website/common/locales/en/groups.json b/website/common/locales/en/groups.json index 8e788a6445..ee7280939d 100644 --- a/website/common/locales/en/groups.json +++ b/website/common/locales/en/groups.json @@ -176,7 +176,9 @@ "messageWroteIn": "<%= user %> wrote in <%= group %>", "msgPreviewHeading": "Message Preview", "leaderOnlyChallenges": "Only group leader can create challenges", - "sendGift": "Send Gift", + "sendGift": "Send a Gift", + "selectGift": "Select Gift", + "sendGiftToWhom": "Who would you like to send a gift to?", "inviteFriends": "Invite Friends", "partyMembersInfo": "Your Party currently has <%= memberCount %> members and <%= invitationCount %> pending invitations. The limit of members in a Party is <%= limitMembers %>. Invitations above this limit cannot be sent.", "inviteByEmail": "Invite by Email", @@ -245,6 +247,8 @@ "userAlreadyInAParty": "UserID: <%= userId %>, User \"<%= username %>\" already in a party. ", "userWithIDNotFound": "User with id \"<%= userId %>\" not found.", "userWithUsernameNotFound": "User with username \"<%= username %>\" not found.", + "usernameOrUserId": "Username or User ID", + "userWithUsernameOrUserIdNotFound": "Username or User ID not found.", "userHasNoLocalRegistration": "User does not have a local registration (username, email, password).", "uuidsMustBeAnArray": "User ID invites must be an array.", "emailsMustBeAnArray": "Email address invites must be an array.", @@ -346,7 +350,7 @@ "aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.", "cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.", "leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan", - "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.", + "youHaveGroupPlan": "You have a free subscription because you are a member of a Group Plan. Your subscription will end when you are no longer a member of the Group Plan.", "cancelGroupSub": "Cancel Group Plan", "confirmCancelGroupPlan": "Are you sure you want to cancel your Group Plan? All Group members will lose their subscription and benefits.", "canceledGroupPlan": "Group Plan Canceled", @@ -490,5 +494,5 @@ "singleCompletion": "Single - Completes when any assigned user finishes", "allAssignedCompletion": "All - Completes when all assigned users finish", "suggestedGroup": "Suggested because you’re new to Habitica.", - "groupActivityNotificationTitle": "<%= user %> posted in <%= group %>" + "groupActivityNotificationTitle": "<%= user %> posted in <%= group %>" } diff --git a/website/common/locales/en/npc.json b/website/common/locales/en/npc.json index 89ff25574d..c6f56ad52a 100644 --- a/website/common/locales/en/npc.json +++ b/website/common/locales/en/npc.json @@ -120,6 +120,7 @@ "paymentYouSentGems": "You sent <%= name %>:", "paymentYouSentSubscription": "You sent <%= name %> a <%= months %>-months Habitica subscription.", "paymentSubBilling": "Your subscription will be billed $<%= amount %> every <%= months %> months.", + "paymentSubBillingWithMethod": "Your subscription will be billed $<%= amount %> every <%= months %> months via <%= paymentMethod %>.", "paymentAutoRenew": "This subscription will auto-renew until it is canceled. If you need to cancel this subscription, you can do so from your settings.", "paymentCanceledDisputes": "We’ve sent a cancelation confirmation to your email. If you don’t see the email, please contact us to prevent future billing disputes.", "success": "Success!", diff --git a/website/common/locales/en/settings.json b/website/common/locales/en/settings.json index c60c370c98..1e7bec50e1 100644 --- a/website/common/locales/en/settings.json +++ b/website/common/locales/en/settings.json @@ -138,7 +138,7 @@ "unsubscribeAllEmailsText": "By checking this box, I certify that I understand that by unsubscribing from all emails, Habitica will never be able to notify me via email about important changes to the site or my account.", "unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications", "correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.", - "subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months", + "subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months", "recurringText": "recurring", "benefits": "Benefits", "coupon": "Coupon", @@ -175,14 +175,15 @@ "pushDeviceAlreadyAdded": "The user already has the push device", "pushDeviceNotFound": "The user has no push device with this id.", "pushDeviceRemoved": "Push device removed successfully.", - "buyGemsGoldCap": "Cap raised to <%= amount %>", + "buyGemsGoldCapBase": "Gem cap at <%= amount %>", + "buyGemsGoldCap": "Gem cap raised to <%= amount %>", "mysticHourglass": "<%= amount %> Mystic Hourglass", "mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.", "purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)", - "purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.", + "purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.", "consecutiveSubscription": "Consecutive Subscription", "consecutiveMonths": "Consecutive Months:", - "gemCapExtra": "Gem Cap Extra:", + "gemCapExtra": "Gem Cap Bonus", "mysticHourglasses": "Mystic Hourglasses:", "mysticHourglassesTooltip": "Mystic Hourglasses", "paypal": "PayPal", diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index fba3c07486..ecbe84ef61 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -19,7 +19,8 @@ "supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!", "exclusiveJackalopePet": "Exclusive pet", "exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!", - "giftSubscription": "Want to gift a subscription to someone?", + "giftSubscription": "Want to gift the benefits of a subscription to someone else?", + "giftASubscription": "Gift a Subscription", "giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.", "giftSubscriptionText2": "Click on the gift icon in the top right of their profile.", "giftSubscriptionText3": "Select \"subscription\" and enter your payment information.", @@ -42,8 +43,8 @@ "manageSub": "Click to manage subscription", "cancelSub": "Cancel Subscription", "cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.", - "cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.", - "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.", + "cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.", + "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer a member of the Group Plan. If you are the Group leader and want to cancel the Group Plan, you can do that from the Group Plan’s “Group Billing” tab.", "canceledSubscription": "Canceled Subscription", "cancelingSubscription": "Canceling the subscription", "adminSub": "Administrator Subscriptions", @@ -177,7 +178,7 @@ "mysterySetwondercon": "Wondercon", - "subUpdateCard": "Update Card", + "subUpdateCard": "Update Credit Card", "subUpdateTitle": "Update", "subUpdateDescription": "Update the card to be charged.", "notEnoughHourglasses": "You don't have enough Mystic Hourglasses.", @@ -222,17 +223,29 @@ "gemBenefit3": "Exciting Quest chains that drop pet eggs.", "gemBenefit4": "Reset your avatar's Stat Points and change its Class.", "subscriptionBenefitLeadin": "Support Habitica by becoming a subscriber and you'll receive these useful benefits!", - "subscriptionBenefit1": "Alexander the Merchant will sell you Gems, for 20 Gold each!", + "subscriptionBenefit1": "Alexander the Merchant will now sell you Gems from the Market for 20 Gold each!", "subscriptionBenefit2": "Completed To-Dos and task history are available for longer.", - "subscriptionBenefit3": "Discover more items in Habitica with a doubled daily drop cap.", - "subscriptionBenefit4": "Unique cosmetic items for your avatar each month.", - "subscriptionBenefit5": "Receive the exclusive Royal Purple Jackalope pet!", - "subscriptionBenefit6": "Earn Mystic Hourglasses for use in the Time Travelers' Shop!", + "subscriptionBenefit3": "Discover even more items in Habitica with a 2x daily drop-cap.", + "subscriptionBenefit4": "Unique cosmetic item for you to decorate your avatar each month.", + "subscriptionBenefit5": "Receive the Royal Purple Jackalope pet when you become a new subscriber.", + "subscriptionBenefit6": "Earn Mystic Hourglasses to purchase items in the Time Traveler’s Shop!", "haveCouponCode": "Do you have a coupon code?", "subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!", "subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to User icon > Settings > Subscription.", "purchaseAll": "Purchase Set", - "gemsPurchaseNote": "Subscribers can buy gems for gold in the Market! For easy access, you can also pin the gem to your Rewards column.", - "gemsRemaining": "gems remaining", - "notEnoughGemsToBuy": "You are unable to buy that amount of gems" + "gemsPurchaseNote": "Subscribers can buy Gems for Gold in the Market! For easy access, you can also pin the Gem to your Rewards column.", + "gemsRemaining": "Gems remaining", + "notEnoughGemsToBuy": "You are unable to buy that amount of Gems", + "subscribersReceiveBenefits": "Subscribers receive these useful benefits!", + "monthlyMysteryItems": "Monthly Mystery Items", + "doubleDropCap": "Double the Drops", + "youAreSubscribed": "You are subscribed to Habitica", + "subscriptionCanceled": "Your subscription is canceled", + "subscriptionInactiveDate": "Your subscription benefits will become inactive on <%= date %>", + "subscriptionStats": "Subscription Stats", + "subMonths": "Sub Months", + "needToUpdateCard": "Need to update your card?", + "readyToResubscribe": "Are you ready to resubscribe?", + "cancelYourSubscription": "Cancel your subscription?", + "cancelSubAlternatives": "If you're having technical problems or Habitica doesn't seem to be working out for you, please consider contacting us. We want to help you get the most from Habitica." } diff --git a/website/server/models/userNotification.js b/website/server/models/userNotification.js index 6e28ed2777..15423ce8a3 100644 --- a/website/server/models/userNotification.js +++ b/website/server/models/userNotification.js @@ -22,6 +22,7 @@ const NOTIFICATION_TYPES = [ 'GROUP_INVITE_ACCEPTED', 'SCORED_TASK', 'BOSS_DAMAGE', // Not used currently but kept to avoid validation errors + 'GIFT_ONE_GET_ONE', 'GUILD_PROMPT', 'GUILD_JOINED_ACHIEVEMENT', 'CHALLENGE_JOINED_ACHIEVEMENT',