mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
Revert "WIP: Buy-1-Get-1 Gift Subs (#9719)"
This reverts commit dc3d694d0e, with the exception of locale strings that need not be purged.
This commit is contained in:
@@ -209,7 +209,7 @@ describe('payments/index', () => {
|
|||||||
await api.createSubscription(data);
|
await api.createSubscription(data);
|
||||||
let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`';
|
let msg = '\`Hello recipient, sender has sent you 3 months of subscription!\`';
|
||||||
|
|
||||||
expect(user.sendMessage).to.be.calledTwice;
|
expect(user.sendMessage).to.be.calledOnce;
|
||||||
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg });
|
expect(user.sendMessage).to.be.calledWith(recipient, { receiverMsg: msg, senderMsg: msg });
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -247,77 +247,6 @@ describe('payments/index', () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
context('Winter 2017-18 Gift-1-Get-1 Promotion', async () => {
|
|
||||||
it('creates a gift subscription for purchaser and recipient if none exist', async () => {
|
|
||||||
await api.createSubscription(data);
|
|
||||||
|
|
||||||
expect(user.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
|
||||||
expect(user.purchased.plan.customerId).to.eql('Gift');
|
|
||||||
expect(user.purchased.plan.dateTerminated).to.exist;
|
|
||||||
expect(user.purchased.plan.dateUpdated).to.exist;
|
|
||||||
expect(user.purchased.plan.dateCreated).to.exist;
|
|
||||||
|
|
||||||
expect(recipient.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
|
||||||
expect(recipient.purchased.plan.customerId).to.eql('Gift');
|
|
||||||
expect(recipient.purchased.plan.dateTerminated).to.exist;
|
|
||||||
expect(recipient.purchased.plan.dateUpdated).to.exist;
|
|
||||||
expect(recipient.purchased.plan.dateCreated).to.exist;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('adds extraMonths to existing subscription for purchaser and creates a gift subscription for recipient without sub', async () => {
|
|
||||||
user.purchased.plan = plan;
|
|
||||||
|
|
||||||
expect(user.purchased.plan.extraMonths).to.eql(0);
|
|
||||||
|
|
||||||
await api.createSubscription(data);
|
|
||||||
|
|
||||||
expect(user.purchased.plan.extraMonths).to.eql(3);
|
|
||||||
|
|
||||||
expect(recipient.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
|
||||||
expect(recipient.purchased.plan.customerId).to.eql('Gift');
|
|
||||||
expect(recipient.purchased.plan.dateTerminated).to.exist;
|
|
||||||
expect(recipient.purchased.plan.dateUpdated).to.exist;
|
|
||||||
expect(recipient.purchased.plan.dateCreated).to.exist;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('adds extraMonths to existing subscription for recipient and creates a gift subscription for purchaser without sub', async () => {
|
|
||||||
recipient.purchased.plan = plan;
|
|
||||||
|
|
||||||
expect(recipient.purchased.plan.extraMonths).to.eql(0);
|
|
||||||
|
|
||||||
await api.createSubscription(data);
|
|
||||||
|
|
||||||
expect(recipient.purchased.plan.extraMonths).to.eql(3);
|
|
||||||
|
|
||||||
expect(user.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
|
||||||
expect(user.purchased.plan.customerId).to.eql('Gift');
|
|
||||||
expect(user.purchased.plan.dateTerminated).to.exist;
|
|
||||||
expect(user.purchased.plan.dateUpdated).to.exist;
|
|
||||||
expect(user.purchased.plan.dateCreated).to.exist;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('adds extraMonths to existing subscriptions for purchaser and recipient', async () => {
|
|
||||||
user.purchased.plan = plan;
|
|
||||||
recipient.purchased.plan = plan;
|
|
||||||
|
|
||||||
expect(user.purchased.plan.extraMonths).to.eql(0);
|
|
||||||
expect(recipient.purchased.plan.extraMonths).to.eql(0);
|
|
||||||
|
|
||||||
await api.createSubscription(data);
|
|
||||||
|
|
||||||
expect(user.purchased.plan.extraMonths).to.eql(3);
|
|
||||||
expect(recipient.purchased.plan.extraMonths).to.eql(3);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('sends a private message about the promotion', async () => {
|
|
||||||
await api.createSubscription(data);
|
|
||||||
let msg = '\`Hello sender, you received 3 months of subscription as part of our holiday gift-giving promotion!\`';
|
|
||||||
|
|
||||||
expect(user.sendMessage).to.be.calledTwice;
|
|
||||||
expect(user.sendMessage).to.be.calledWith(user, { senderMsg: msg });
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
context('Purchasing a subscription for self', () => {
|
context('Purchasing a subscription for self', () => {
|
||||||
|
|||||||
@@ -31,17 +31,11 @@ b-modal#send-gems(:title="title", :hide-footer="true", size='lg')
|
|||||||
)
|
)
|
||||||
h3.panel-heading {{ $t('subscription') }}
|
h3.panel-heading {{ $t('subscription') }}
|
||||||
.panel-body
|
.panel-body
|
||||||
.row
|
.form-group
|
||||||
.col-md-4
|
.radio(v-for='block in subscriptionBlocks', v-if="block.target !== 'group' && block.canSubscribe === true")
|
||||||
.form-group
|
label
|
||||||
.radio(v-for='block in subscriptionBlocks', v-if="block.target !== 'group' && block.canSubscribe === true")
|
input(type="radio", name="subRadio", :value="block.key", v-model='gift.subscription.key')
|
||||||
label
|
| {{ $t('sendGiftSubscription', {price: block.price, months: block.months}) }}
|
||||||
input(type="radio", name="subRadio", :value="block.key", v-model='gift.subscription.key')
|
|
||||||
| {{ $t('sendGiftSubscription', {price: block.price, months: block.months}) }}
|
|
||||||
.col-md-8
|
|
||||||
h4 {{ $t('winterPromoGiftHeader') }}
|
|
||||||
p {{ $t('winterPromoGiftDetails1') }}
|
|
||||||
p {{ $t('winterPromoGiftDetails2') }}
|
|
||||||
|
|
||||||
textarea.form-control(rows='3', v-model='gift.message', :placeholder="$t('sendGiftMessagePlaceholder')")
|
textarea.form-control(rows='3', v-model='gift.message', :placeholder="$t('sendGiftMessagePlaceholder')")
|
||||||
//include ../formatting-help
|
//include ../formatting-help
|
||||||
|
|||||||
@@ -90,11 +90,6 @@
|
|||||||
li {{ $t('giftSubscriptionText2') }}
|
li {{ $t('giftSubscriptionText2') }}
|
||||||
li {{ $t('giftSubscriptionText3') }}
|
li {{ $t('giftSubscriptionText3') }}
|
||||||
h4 {{ $t('giftSubscriptionText4') }}
|
h4 {{ $t('giftSubscriptionText4') }}
|
||||||
.col-6
|
|
||||||
h2 {{ $t('winterPromoGiftHeader') }}
|
|
||||||
p {{ $t('winterPromoGiftDetails1') }}
|
|
||||||
p {{ $t('winterPromoGiftDetails2') }}
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -125,8 +125,8 @@
|
|||||||
"dateEndOctober": "October 31",
|
"dateEndOctober": "October 31",
|
||||||
"dateEndNovember": "November 30",
|
"dateEndNovember": "November 30",
|
||||||
"dateEndJanuary": "January 31",
|
"dateEndJanuary": "January 31",
|
||||||
"discountBundle": "bundle",
|
|
||||||
"winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
|
"winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
|
||||||
"winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
|
"winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
|
||||||
"winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
|
"winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3",
|
||||||
|
"discountBundle": "bundle"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -365,59 +365,47 @@ api.createSubscription = async function createSubscription (data) {
|
|||||||
txnEmail(data.user, emailType);
|
txnEmail(data.user, emailType);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.promo) {
|
analytics.trackPurchase({
|
||||||
analytics.trackPurchase({
|
uuid: data.user._id,
|
||||||
uuid: data.user._id,
|
groupId,
|
||||||
groupId,
|
itemPurchased,
|
||||||
itemPurchased,
|
sku: `${data.paymentMethod.toLowerCase()}-subscription`,
|
||||||
sku: `${data.paymentMethod.toLowerCase()}-subscription`,
|
purchaseType,
|
||||||
purchaseType,
|
paymentMethod: data.paymentMethod,
|
||||||
paymentMethod: data.paymentMethod,
|
quantity: 1,
|
||||||
quantity: 1,
|
gift: Boolean(data.gift),
|
||||||
gift: Boolean(data.gift),
|
purchaseValue: block.price,
|
||||||
purchaseValue: block.price,
|
headers: data.headers,
|
||||||
headers: data.headers,
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!group && !data.promo) data.user.purchased.txnCount++;
|
if (!group) data.user.purchased.txnCount++;
|
||||||
|
|
||||||
if (data.gift) {
|
if (data.gift) {
|
||||||
let byUserName = getUserInfo(data.user, ['name']).name;
|
let byUserName = getUserInfo(data.user, ['name']).name;
|
||||||
|
|
||||||
// generate the message in both languages, so both users can understand it
|
// generate the message in both languages, so both users can understand it
|
||||||
let languages = [data.user.preferences.language, data.gift.member.preferences.language];
|
let languages = [data.user.preferences.language, data.gift.member.preferences.language];
|
||||||
if (data.promo) {
|
let senderMsg = shared.i18n.t('giftedSubscriptionFull', {
|
||||||
let senderMsg = shared.i18n.t(`giftedSubscription${data.promo}Promo`, {
|
username: data.gift.member.profile.name,
|
||||||
username: data.gift.member.profile.name,
|
sender: byUserName,
|
||||||
monthCount: shared.content.subscriptionBlocks[data.gift.subscription.key].months,
|
monthCount: shared.content.subscriptionBlocks[data.gift.subscription.key].months,
|
||||||
}, languages[0]);
|
}, languages[0]);
|
||||||
|
senderMsg = `\`${senderMsg}\``;
|
||||||
|
|
||||||
senderMsg = `\`${senderMsg}\``;
|
let receiverMsg = shared.i18n.t('giftedSubscriptionFull', {
|
||||||
data.user.sendMessage(data.gift.member, { senderMsg });
|
username: data.gift.member.profile.name,
|
||||||
} else {
|
sender: byUserName,
|
||||||
let senderMsg = shared.i18n.t('giftedSubscriptionFull', {
|
monthCount: shared.content.subscriptionBlocks[data.gift.subscription.key].months,
|
||||||
username: data.gift.member.profile.name,
|
}, languages[1]);
|
||||||
sender: byUserName,
|
receiverMsg = `\`${receiverMsg}\``;
|
||||||
monthCount: shared.content.subscriptionBlocks[data.gift.subscription.key].months,
|
|
||||||
}, languages[0]);
|
|
||||||
senderMsg = `\`${senderMsg}\``;
|
|
||||||
|
|
||||||
let receiverMsg = shared.i18n.t('giftedSubscriptionFull', {
|
if (data.gift.message) {
|
||||||
username: data.gift.member.profile.name,
|
receiverMsg += ` ${data.gift.message}`;
|
||||||
sender: byUserName,
|
senderMsg += ` ${data.gift.message}`;
|
||||||
monthCount: shared.content.subscriptionBlocks[data.gift.subscription.key].months,
|
|
||||||
}, languages[1]);
|
|
||||||
receiverMsg = `\`${receiverMsg}\``;
|
|
||||||
|
|
||||||
if (data.gift.message) {
|
|
||||||
receiverMsg += ` ${data.gift.message}`;
|
|
||||||
senderMsg += ` ${data.gift.message}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data.user.sendMessage(data.gift.member, { receiverMsg, senderMsg });
|
||||||
|
|
||||||
if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) {
|
if (data.gift.member.preferences.emailNotifications.giftedSubscription !== false) {
|
||||||
txnEmail(data.gift.member, 'gifted-subscription', [
|
txnEmail(data.gift.member, 'gifted-subscription', [
|
||||||
{name: 'GIFTER', content: byUserName},
|
{name: 'GIFTER', content: byUserName},
|
||||||
@@ -425,20 +413,7 @@ api.createSubscription = async function createSubscription (data) {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.gift.member._id !== data.user._id) { // If sending to a user other than yourself, don't push notify, and get bonus sub for self per holiday promo
|
if (data.gift.member._id !== data.user._id) { // Only send push notifications if sending to a user other than yourself
|
||||||
let promoData = {
|
|
||||||
user: data.user,
|
|
||||||
gift: {
|
|
||||||
member: data.user,
|
|
||||||
subscription: {
|
|
||||||
key: data.gift.subscription.key,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
paymentMethod: data.paymentMethod,
|
|
||||||
promo: 'Winter',
|
|
||||||
};
|
|
||||||
await this.createSubscription(promoData);
|
|
||||||
|
|
||||||
if (data.gift.member.preferences.pushNotifications.giftedSubscription !== false) {
|
if (data.gift.member.preferences.pushNotifications.giftedSubscription !== false) {
|
||||||
sendPushNotification(data.gift.member,
|
sendPushNotification(data.gift.member,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ function sendSubscriptionNotification ({
|
|||||||
let text;
|
let text;
|
||||||
let timestamp = new Date();
|
let timestamp = new Date();
|
||||||
if (recipient.id) {
|
if (recipient.id) {
|
||||||
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a ${months}-month gift subscription for ${recipient.name} ${recipient.id} ${recipient.email} and got a promo using ${paymentMethod} on ${timestamp}`;
|
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a ${months}-month gift subscription for ${recipient.name} ${recipient.id} ${recipient.email} using ${paymentMethod} on ${timestamp}`;
|
||||||
} else if (groupId) {
|
} else if (groupId) {
|
||||||
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a 1-month recurring group-plan for ${groupId} using ${paymentMethod} on ${timestamp}`;
|
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a 1-month recurring group-plan for ${groupId} using ${paymentMethod} on ${timestamp}`;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user