mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-04-14 19:47:03 +00:00
commit dd0a410fa6c3741dc0d6793283cf4df3c37790a5
Author: Kalista Payne <sabrecat@gmail.com>
Date: Mon Nov 4 14:24:30 2024 -0600
fix(subs): center next hourglass message
commit 72d92ffd76bb43fee8ba2bbabd211e595afbd664
Author: Kalista Payne <sabrecat@gmail.com>
Date: Fri Nov 1 14:17:59 2024 -0500
fix(subs): don't hide HG preview entirely
commit ea0ecb0c3d519ed3d5c42266367eaaa7283ac5de
Author: Kalista Payne <sabrecat@gmail.com>
Date: Fri Nov 1 13:01:06 2024 -0500
fix(subs): Google wording and HG escape
commit 2bd2c69e18e37c8c8c7106c62f186c372d25c5d2
Author: Kalista Payne <sabrecat@gmail.com>
Date: Fri Nov 1 09:25:30 2024 -0500
fix(layout): tighten cancellation note
commit eb2fc40d241b18d4ffff04c35e744f05e6e9ff52
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 24 15:41:43 2024 -0500
fix(g1g1): don't try to find Gems promo during bogo
commit d3eea86bd773c5236e8a0f619639e49db846c2ba
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 24 15:00:09 2024 -0500
fix(subs): fix typeError
commit e3ae9a2d6736f238c6aaaec37a5bf38d64afafe8
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 24 13:57:27 2024 -0500
fix(subs): also redirect to subs after gift sub
commit 690163a0dec3a45329062905c90454c7cd7c83fd
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Oct 23 16:42:38 2024 +0200
fix test
commit 2ad7541fc0de429c152e6824f65d2b11b84a9809
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Oct 23 16:34:52 2024 +0200
fix test
commit 7e337a9e591f2e8b27684567290a70f1b2d58aa0
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Oct 23 11:54:15 2024 +0200
remove only
commit 7462b8a57f852ecfc52e74fb50d6cff1751bef74
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Oct 23 11:51:25 2024 +0200
fix bug with incorrectly giving HG bonus
commit acd6183e95a5783dfa29e6c2b142f965c3c67411
Author: Kalista Payne <sabrecat@gmail.com>
Date: Mon Oct 21 17:22:26 2024 -0500
fix(subs): unhovery and un-12-monthy
commit 935e9fd6ec2688ac7339c56ce0ff03bfdae30c77
Author: Kalista Payne <sabrecat@gmail.com>
Date: Fri Oct 18 14:50:17 2024 -0500
fix(subs): try again on gifts
commit 6e1fb7df38d90e5c3ccebee9bb86dbb8f8a4678f
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 17 18:19:20 2024 -0500
fix(lint): do negate object ig
commit 71d434b94ea3b1a2c9381fd70f2e637473e00cac
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 17 18:15:11 2024 -0500
fix(lint): unnecessary ternary
commit b90b0bb9c39b931714526a9d20910968b055038d
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 17 17:34:24 2024 -0500
fix(subs): gifts DON't renew
commit 19469304c5a5881329ea1682e2070f9666d49ee4
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 17 17:13:29 2024 -0500
fix(subs): pass autoRenews through Stripe
commit 6819e7b7e518969c58ebab4400f3147f0ddea1b3
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 17 16:03:25 2024 -0500
fix(subscriptions): minor visual updates
commit 74633b5e5ea71d66681ad0e84873f3080ab5d361
Author: Kalista Payne <sabrecat@gmail.com>
Date: Wed Oct 16 17:27:09 2024 -0500
fix(subscriptions): more gift layout revisions
commit a90ccb89de36a85acc214bb0b88479e0b78f1660
Author: Kalista Payne <sabrecat@gmail.com>
Date: Wed Oct 16 15:37:50 2024 -0500
fix(subscription): update layout when gifting
commit c24b2db8dc6642669068f0a79d9b0990d43decb9
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Oct 14 16:11:46 2024 +0200
fix issue with promo hourglasses
commit 7a61c72b47cd3403fe0f3edf91522277738068cc
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Oct 14 15:59:40 2024 +0200
don’t give additional HG for new sub if they already got one this month
commit f14cb090265ed830eb76c7f452e806257312370e
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Oct 14 10:38:01 2024 +0200
Admin panel display fixes
commit f4cff698cfb80f9ad2da7ecb626f84277f97eb7c
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 3 17:58:59 2024 -0500
fix(stripe): correct redirect after success
commit c468b58f3f783c58e9b48f9698b45473b526d3d4
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Oct 3 17:35:37 2024 -0500
fix(subs): correct border-radius and redirect
commit 78fb9e31d64f25aa091e24f95f25dc6dedc844a6
Author: Kalista Payne <sabrecat@gmail.com>
Date: Wed Oct 2 17:41:49 2024 -0500
fix(css): correct and refactor heights and selection states
commit e2babe8053a778b64d51bd3d18866e69fb326a3c
Author: Kalista Payne <sabrecat@gmail.com>
Date: Mon Sep 30 16:45:29 2024 -0500
feat(subscription): max Gems progress readout
commit 61af8302a349f70d60886492b3d4f05dd5463a51
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Sep 27 15:11:22 2024 +0200
fix test
commit ef8ff0ea9eebcbd682a34fd7f52722b92fdfae16
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Sep 27 14:14:44 2024 +0200
show date for hourglass bonus if it was received
commit 4bafafdc8d493aad960dcf0d4957d3dad2d5e8da
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Sep 27 14:12:52 2024 +0200
add new field for cumulative subscription count
commit 30096247b73bdb76aa5b10dd4c964a78d2511e69
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Sep 27 13:39:49 2024 +0200
fix missing transaction type
commit 70872651b09613a8fe1a19ee2e19dac398b3134d
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Sep 27 13:31:40 2024 +0200
fix admin panel strings
commit f3398db65f26db558f38ecce8fe4795ff73650cb
Author: Kalista Payne <sabrecat@gmail.com>
Date: Thu Sep 26 23:11:16 2024 -0500
WIP(subs): extant Stripe state
commit c6b2020109b2cdbc7dd8579c884c65f81e757c25
Author: Phillip Thelen <phillip@habitica.com>
Date: Thu Sep 26 11:41:55 2024 +0200
fix admin panel display
commit d9afc96d2db8021db7e6310a009c15004ccc5c38
Author: Phillip Thelen <phillip@habitica.com>
Date: Thu Sep 26 11:40:16 2024 +0200
Fix hourglass logic for upgrades
commit 6e2c8eeb649481afc349e6eb7741bcc82909c3c4
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Sep 25 17:48:54 2024 +0200
fix hourglass count
commit cd752fbdce79f24bbdbaf6fd9558f207754c5cc3
Author: Kalista Payne <sabrecat@gmail.com>
Date: Fri Sep 20 12:24:21 2024 -0500
WIP(frontend): draft of main subs page view
commit 0102b29d599e47192d7346180ecd549c79177156
Author: Kalista Payne <sabe@habitica.com>
Date: Wed Sep 18 15:29:08 2024 -0500
fix(admin): correct logic and style for shrimple subs
commit 5469a5c5c3fddcf611018c1de077de3499df787a
Author: Kalista Payne <sabe@habitica.com>
Date: Wed Sep 18 15:07:36 2024 -0500
fix(test): short circuit this.
commit 526193ee6c9d07915d0373d07bb8ee0554fe2614
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Sep 18 14:42:06 2024 +0200
fix gem limit
commit 19cf1636aa1371147ea92478485a653d612d9755
Author: Phillip Thelen <phillip@habitica.com>
Date: Tue Aug 13 17:00:40 2024 +0200
return nextHourglassDate again
commit eea36e3ed54633c345d628d1d3d08e03a3e416a3
Author: Phillip Thelen <phillip@habitica.com>
Date: Tue Aug 13 13:11:22 2024 +0200
subscription test improvements
commit ca78e7433031e79c61aba67235481e0b1c569a55
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 12 15:46:15 2024 +0200
add more subscription tests
commit f4c4f93a081a89d4c79aec1e87dac97d90c1d587
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Aug 9 13:35:22 2024 +0200
finish basic implementation of new logic
commit e036742048b92c2e2f29724fb02462f117d91aea
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Aug 9 11:37:44 2024 +0200
cleanup
commit 643186568866ddea0a234b68d37ad4ab634bd147
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Aug 7 05:41:18 2024 -0400
update cron tests
commit 930d875ae9d518b0b504ec97638e94c7296ad388
Author: Phillip Thelen <phillip@habitica.com>
Date: Thu Aug 8 10:36:50 2024 +0200
begin refactoring
commit 96623608d064b94cfa40e5da736f13c696995df9
Author: Phillip Thelen <phillip@habitica.com>
Date: Tue Aug 6 16:28:16 2024 +0200
begin removing obsolete tests
419 lines
11 KiB
Vue
419 lines
11 KiB
Vue
<template>
|
|
<div id="subscription-form">
|
|
<div
|
|
class="w-100 h-100"
|
|
:class="{'mb-2': userReceivingGift?._id}"
|
|
>
|
|
<strong
|
|
v-if="userReceivingGift?._id"
|
|
class="text-center d-block mb-3 mx-5"
|
|
>
|
|
{{ $t('giftSubscriptionLeadText') }}
|
|
</strong>
|
|
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
|
<div
|
|
v-for="block in subscriptionBlocksOrdered"
|
|
v-if="block.target !== 'group' && block.canSubscribe === true"
|
|
:key="block.key"
|
|
:value="block.key"
|
|
class="subscribe-option d-flex"
|
|
:class="{
|
|
selected: subscription.key === block.key,
|
|
'mb-2': block.months !== 12,
|
|
final: block.months === 12,
|
|
'mx-4': userReceivingGift?._id,
|
|
}"
|
|
@click="updateSubscriptionData(block.key)"
|
|
>
|
|
<div v-if="subscription.key === block.key">
|
|
<div class="selected-corner"></div>
|
|
<div
|
|
class="svg svg-icon svg-check color m-2"
|
|
v-html="icons.check"
|
|
>
|
|
</div>
|
|
</div>
|
|
<div
|
|
v-if="block.months === 12"
|
|
class="ribbon mt-3 d-flex align-items-center"
|
|
>
|
|
<small class="bold teal-1"> {{ $t('popular') }} </small>
|
|
</div>
|
|
<!-- eslint-enable vue/no-use-v-if-with-v-for -->
|
|
<div class="w-100">
|
|
<div
|
|
class="mx-5"
|
|
v-if="block.months < 12"
|
|
>
|
|
<h2
|
|
class="mt-3 mb-1"
|
|
> ${{ block.price }}.00 USD </h2>
|
|
<small
|
|
class="bold mb-2"
|
|
>
|
|
{{ recurrenceText(block.months) }}
|
|
</small>
|
|
<div class="d-flex flex-column mb-3">
|
|
<div class="d-flex align-items-center mb-1">
|
|
<div
|
|
class="svg svg-icon svg-plus color mr-1"
|
|
v-html="icons.plus"
|
|
>
|
|
</div>
|
|
<small
|
|
v-html="userReceivingGift?._id ? $t('unlockNGemsGift', { count: 24 })
|
|
: $t('unlockNGems', { count: 24 })"
|
|
></small>
|
|
</div>
|
|
<div class="d-flex align-items-center">
|
|
<div
|
|
class="svg svg-icon svg-plus color mr-1"
|
|
v-html="icons.plus"
|
|
>
|
|
</div>
|
|
<small
|
|
v-html="userReceivingGift?._id ? $t('earn2GemsGift') : $t('earn2Gems')"
|
|
></small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-else>
|
|
<div
|
|
class="bg-white py-3 pl-5"
|
|
:class="{ round: userReceivingGift?._id }"
|
|
>
|
|
<div class="d-flex align-items-center mb-1">
|
|
<h2 class="mr-2 my-auto"> ${{ block.price }}.00 USD</h2>
|
|
<strike class="gray-200">$60.00 USD</strike>
|
|
</div>
|
|
<small class="bold mb-2">
|
|
{{ recurrenceText(block.months) }}
|
|
</small>
|
|
<div class="d-flex flex-column">
|
|
<div class="d-flex align-items-center mb-1">
|
|
<div
|
|
class="svg svg-icon svg-plus color mr-1"
|
|
v-html="icons.plus"
|
|
>
|
|
</div>
|
|
<small
|
|
v-html="userReceivingGift?._id ? $t('unlockNGemsGift', { count: 50 })
|
|
: $t('unlockNGems', { count: 50 })"
|
|
></small>
|
|
</div>
|
|
<div class="d-flex align-items-center">
|
|
<div
|
|
class="svg svg-icon svg-plus color mr-1"
|
|
v-html="icons.plus"
|
|
>
|
|
</div>
|
|
<small v-html="userReceivingGift?._id ? $t('maxGemCapGift') : $t('maxGemCap')">
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="gradient-banner text-center"
|
|
v-if="!userReceivingGift?._id && !user?.purchased?.plan?.hourglassPromoReceived"
|
|
>
|
|
<small class="my-3" v-html="$t('immediate12Hourglasses')"></small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<button
|
|
class="btn btn-primary"
|
|
:class="[canceled ? 'mt-4' : 'mt-3', userReceivingGift?._id ? 'mx-4' : 'w-100']"
|
|
@click="$root.$emit('bv::show::modal', 'buy-subscription')"
|
|
> {{ userReceivingGift?._id ? $t('selectPayment') : $t('subscribe') }} </button>
|
|
</div>
|
|
<div
|
|
v-if="note"
|
|
class="mx-4 my-3 text-center"
|
|
>
|
|
<small
|
|
v-once
|
|
class="font-italic"
|
|
>
|
|
{{ $t(note) }}
|
|
</small>
|
|
</div>
|
|
<b-modal
|
|
id="buy-subscription"
|
|
size="md"
|
|
:hide-header="true"
|
|
:hide-footer="true"
|
|
>
|
|
<payments-buttons
|
|
v-if="userReceivingGift?._id"
|
|
:disabled="!subscription.key"
|
|
:stripe-fn="() => redirectToStripe({gift, uuid: userReceivingGift._id, receiverName})"
|
|
:paypal-fn="() => openPaypalGift({
|
|
gift: gift, giftedTo: userReceivingGift._id, receiverName,
|
|
})"
|
|
/>
|
|
<payments-buttons
|
|
v-else
|
|
:disabled="!subscription.key"
|
|
:stripe-fn="() => redirectToStripe({
|
|
subscription: subscription.key,
|
|
coupon: subscription.coupon,
|
|
})"
|
|
:paypal-fn="() => openPaypal({url: paypalPurchaseLink, type: 'subscription'})"
|
|
/>
|
|
</b-modal>
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss">
|
|
@import '~@/assets/scss/colors.scss';
|
|
|
|
#subscription-form {
|
|
.custom-control .custom-control-label::before,
|
|
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
|
|
margin-top: 0.75rem;
|
|
}
|
|
|
|
.discount-bubble {
|
|
background-color: $green-10;
|
|
color: $white;
|
|
}
|
|
|
|
.selected {
|
|
outline: 2px solid $purple-300;
|
|
.subscription-bubble {
|
|
background-color: $purple-300;
|
|
color: $white;
|
|
}
|
|
.subscription-text {
|
|
color: $purple-200;
|
|
}
|
|
}
|
|
|
|
.subscription-bubble, .discount-bubble {
|
|
border-radius: 100px;
|
|
padding-left: 12px;
|
|
padding-right: 12px;
|
|
font-size: 12px;
|
|
line-height: 1.33;
|
|
}
|
|
|
|
.subscription-bubble {
|
|
background-color: $gray-600;
|
|
color: $gray-200;
|
|
}
|
|
|
|
.selected strong {
|
|
color: $yellow-5;
|
|
}
|
|
|
|
.selected .gradient-banner strong {
|
|
color: $teal-1;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '~@/assets/scss/colors.scss';
|
|
|
|
small, .small {
|
|
color: $gray-100;
|
|
display: inline-block;
|
|
font-size: 12px ;
|
|
font-weight: normal;
|
|
line-height: 16px;
|
|
|
|
&.bold {
|
|
font-weight: 700;
|
|
}
|
|
}
|
|
|
|
strike, strong {
|
|
line-height: 24px;
|
|
}
|
|
|
|
.btn-primary {
|
|
min-width: 400px;
|
|
}
|
|
|
|
.gradient-banner small {
|
|
color: $teal-1;
|
|
width: 61%;
|
|
}
|
|
|
|
.ribbon {
|
|
width: fit-content;
|
|
background: linear-gradient(90deg, rgba(119, 244, 199, 1), rgba(114, 207, 255, 1));
|
|
border-radius: 4px;
|
|
clip-path: polygon(0px 0px, calc(100% + 1px) 0px, calc(100% + 1px) calc(100% + 1px),
|
|
0px calc(100% + 3px), 4px 50%);
|
|
box-shadow: 0px 1px 3px 0px rgba(26, 24, 29, 0.12), 0px 1px 2px 0px rgba(26, 24, 29, 0.24);
|
|
position: absolute;
|
|
right: -4px;
|
|
line-height: 1.33;
|
|
padding: 4px 10px 4px 12px;
|
|
}
|
|
|
|
.selected-corner {
|
|
border-color: $purple-300 transparent transparent transparent;
|
|
border-style: solid;
|
|
border-width: 48px 48px 0 0;
|
|
border-top-left-radius: 4px;
|
|
position: absolute;
|
|
}
|
|
|
|
.subscribe-option {
|
|
max-width: 448px;
|
|
border-radius: 8px;
|
|
box-shadow: 0px 1px 3px 0px rgba($black, 0.12), 0px 1px 2px 0px rgba($black, 0.24);
|
|
position: relative;
|
|
background-color: $white;
|
|
|
|
.bg-white {
|
|
border-top-left-radius: 8px;
|
|
border-top-right-radius: 8px;
|
|
|
|
&.round {
|
|
border-bottom-left-radius: 8px;
|
|
border-bottom-right-radius: 8px;
|
|
}
|
|
}
|
|
|
|
&.final h2 {
|
|
color: $teal-10;
|
|
}
|
|
|
|
&:hover, &.selected {
|
|
box-shadow: 0px 3px 6px 0px rgba($black, 0.16), 0px 3px 6px 0px rgba($black, 0.24);
|
|
}
|
|
|
|
&.selected {
|
|
&.final {
|
|
small {
|
|
color: $teal-1;
|
|
}
|
|
}
|
|
&:not(.final) {
|
|
h2, small {
|
|
color: $purple-200;
|
|
}
|
|
}
|
|
.svg-plus {
|
|
color: $yellow-10;
|
|
}
|
|
}
|
|
|
|
&.final {
|
|
background: linear-gradient(90deg, rgba($green-500, 1), rgba(114, 207, 255, 1));
|
|
}
|
|
|
|
h2 {
|
|
font-family: 'Roboto', sans-serif;
|
|
line-height: 24px;
|
|
color: $gray-50;
|
|
}
|
|
}
|
|
|
|
.svg-check {
|
|
width: 16px;
|
|
position: absolute;
|
|
color: $white;
|
|
}
|
|
|
|
.svg-plus {
|
|
color: $gray-300;
|
|
min-width: 10px;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
import filter from 'lodash/filter';
|
|
import sortBy from 'lodash/sortBy';
|
|
|
|
import subscriptionBlocks from '@/../../common/script/content/subscriptionBlocks';
|
|
import paymentsButtons from '@/components/payments/buttons/list';
|
|
import paymentsMixin from '../../mixins/payments';
|
|
import check from '@/assets/svg/check.svg';
|
|
import plus from '@/assets/svg/positive.svg';
|
|
|
|
export default {
|
|
components: {
|
|
paymentsButtons,
|
|
},
|
|
mixins: [
|
|
paymentsMixin,
|
|
],
|
|
props: {
|
|
note: {
|
|
type: String,
|
|
default: null,
|
|
},
|
|
userReceivingGift: {
|
|
type: Object,
|
|
default () {},
|
|
},
|
|
receiverName: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
canceled: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
data () {
|
|
return {
|
|
gift: {
|
|
type: 'subscription',
|
|
subscription: { key: 'basic_12mo' },
|
|
},
|
|
icons: Object.freeze({
|
|
check,
|
|
plus,
|
|
}),
|
|
subscription: {
|
|
key: 'basic_12mo',
|
|
},
|
|
};
|
|
},
|
|
computed: {
|
|
subscriptionBlocks () {
|
|
return subscriptionBlocks;
|
|
},
|
|
subscriptionBlocksOrdered () {
|
|
const subscriptions = filter(subscriptionBlocks, o => o.discount !== true);
|
|
return sortBy(subscriptions, [o => o.months]);
|
|
},
|
|
},
|
|
methods: {
|
|
recurrenceText (months) {
|
|
if (this.userReceivingGift?._id) {
|
|
if (months < 2) {
|
|
return this.$t('oneMonthGift');
|
|
}
|
|
return this.$t('nMonthsGift', { months });
|
|
}
|
|
if (months < 2) {
|
|
return this.$t('recurringMonthly');
|
|
}
|
|
return (this.$t('recurringNMonthly', { length: months }));
|
|
},
|
|
subscriptionBubbles (subscription) {
|
|
switch (subscription) {
|
|
case 'basic_3mo':
|
|
return '<span class="subscription-bubble py-1 mr-1">Gem cap raised to 30</span><span class="subscription-bubble py-1">+1 Mystic Hourglass</span>';
|
|
case 'basic_6mo':
|
|
return '<span class="subscription-bubble py-1 mr-1">Gem cap raised to 35</span><span class="subscription-bubble py-1">+2 Mystic Hourglass</span>';
|
|
case 'basic_12mo':
|
|
return '<span class="discount-bubble py-1 mr-1">Save 20%</span><span class="subscription-bubble py-1 mr-1">Gem cap raised to 45</span><span class="subscription-bubble py-1">+4 Mystic Hourglass</span>';
|
|
default:
|
|
return '<span class="subscription-bubble py-1">Gem cap at 25</span>';
|
|
}
|
|
},
|
|
updateSubscriptionData (key) {
|
|
this.subscription.key = key;
|
|
if (this.userReceivingGift?._id) this.gift.subscription.key = key;
|
|
},
|
|
},
|
|
};
|
|
</script>
|