c58e83c9d7
refs https://github.com/TryGhost/Team/issues/1132 We have to include the Offer on the metadata for the Stripe Checkout - as Offers with a duration of 'once' will not always be present on the Subscription after fetching it. Once we receive the Stripe Checkout webhook we emit an event for subscription created - the reason we use an event is because this logic should eventually live in a Payments/Stripe module - and we'd want to decouple it from the Members module. The Members module is in charge of writing Offer Redemptions - rather than the Offers module - because Offer Redemptions are "owned" by a Member - and merely reference and Offer. Eventually Offer Redemptions could be replaced by Subscriptions.
26 lines
615 B
JavaScript
26 lines
615 B
JavaScript
/**
|
|
* @typedef {object} SubscriptionCreatedEventData
|
|
* @prop {string} memberId
|
|
* @prop {string} subscriptionId
|
|
* @prop {string} offerId
|
|
*/
|
|
|
|
module.exports = class SubscriptionCreatedEvent {
|
|
/**
|
|
* @param {SubscriptionCreatedEventData} data
|
|
* @param {Date} timestamp
|
|
*/
|
|
constructor(data, timestamp) {
|
|
this.data = data;
|
|
this.timestamp = timestamp;
|
|
}
|
|
|
|
/**
|
|
* @param {SubscriptionCreatedEventData} data
|
|
* @param {Date} [timestamp]
|
|
*/
|
|
static create(data, timestamp) {
|
|
return new SubscriptionCreatedEvent(data, timestamp || new Date);
|
|
}
|
|
};
|