0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00

Added Offers service

refs https://github.com/TryGhost/Team/issues/1083

This adds the Offers service which will allow us to build out an Admin
API to communicate with it. As well as wiring up the redirects to the
site app.
This commit is contained in:
Fabien O'Carroll 2021-10-05 13:17:18 +02:00 committed by Fabien 'egg' O'Carroll
parent 68de391c98
commit 3742a4afb7
5 changed files with 68 additions and 0 deletions

View file

@ -191,6 +191,7 @@ async function initServices({config}) {
debug('Begin: Services');
const stripe = require('./server/services/stripe');
const members = require('./server/services/members');
const offers = require('./server/services/offers');
const permissions = require('./server/services/permissions');
const xmlrpc = require('./server/services/xmlrpc');
const slack = require('./server/services/slack');
@ -212,6 +213,7 @@ async function initServices({config}) {
await Promise.all([
members.init(),
offers.init(),
permissions.init(),
xmlrpc.listen(),
slack.listen(),

View file

@ -0,0 +1 @@
module.exports = require('./service');

View file

@ -0,0 +1,53 @@
const labs = require('../../../shared/labs');
const events = require('../../lib/common/events');
const DynamicRedirectManager = require('@tryghost/express-dynamic-redirects');
const OffersModule = require('@tryghost/members-offers');
const stripeService = require('../stripe');
const config = require('../../../shared/config');
const urlUtils = require('../../../shared/url-utils');
const models = require('../../models');
const redirectManager = new DynamicRedirectManager({
permanentMaxAge: config.get('caching:customRedirects:maxAge')
}, urlUtils);
module.exports = {
async init() {
const offersModule = OffersModule.create({
OfferModel: models.Offer,
redirectManager: redirectManager,
stripeAPIService: stripeService.api
});
this.api = offersModule.api;
if (labs.isSet('offers')) {
// handles setting up redirects
await offersModule.init();
}
// TODO: Delete after GA
let offersEnabled = labs.isSet('offers');
events.on('settings.labs.edited', async () => {
if (labs.isSet('offers') !== offersEnabled) {
offersEnabled = labs.isSet('offers');
if (offersEnabled) {
const offers = await this.api.listOffers();
for (const offer of offers) {
redirectManager.addRedirect(`/${offer.code}`, `/#/portal/offers/${offer.id}`, {permanent: false});
}
} else {
redirectManager.removeAllRedirects();
}
}
});
},
api: null,
middleware: redirectManager.handleRequest
};

View file

@ -64,6 +64,7 @@
"@tryghost/email-analytics-provider-mailgun": "1.0.2",
"@tryghost/email-analytics-service": "1.0.2",
"@tryghost/errors": "0.2.16",
"@tryghost/express-dynamic-redirects": "^0.1.0",
"@tryghost/helpers": "1.1.52",
"@tryghost/image-transform": "1.0.16",
"@tryghost/job-manager": "0.8.10",
@ -78,6 +79,7 @@
"@tryghost/members-api": "2.0.0",
"@tryghost/members-csv": "1.1.7",
"@tryghost/members-importer": "0.3.3",
"@tryghost/members-offers": "0.2.1",
"@tryghost/members-ssr": "1.0.14",
"@tryghost/mw-session-from-token": "0.1.25",
"@tryghost/nodemailer": "0.3.3",

View file

@ -1319,6 +1319,11 @@
"@tryghost/ignition-errors" "^0.1.0"
lodash "^4.17.21"
"@tryghost/express-dynamic-redirects@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@tryghost/express-dynamic-redirects/-/express-dynamic-redirects-0.1.0.tgz#85c6caa2887034ea8064a40ca0622a87e4000c4e"
integrity sha512-C9594LRjH3wsAWUoMCb5sZg/1Ifrn/O2aQeWQeBDgqUWAScmtUuIpkPNTRrq0cZ1Yv4ig5gWMKv4YSe5TdAVdA==
"@tryghost/helpers@1.1.52":
version "1.1.52"
resolved "https://registry.yarnpkg.com/@tryghost/helpers/-/helpers-1.1.52.tgz#e30bd367ea62d1b27e59abfa8e8ed8c3e072b74e"
@ -1522,6 +1527,11 @@
"@tryghost/tpl" "^0.1.3"
moment-timezone "0.5.23"
"@tryghost/members-offers@0.2.1":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@tryghost/members-offers/-/members-offers-0.2.1.tgz#e6070df6156b9c73dd73ef7b37cef30c0b5a3046"
integrity sha512-FLiwWBHXo4Rt9Ei1liZYnfkb23NyvyeAdFE2GoIPVIoRrAq+Di19Df44QhAt+ixcrpS9ShNOwmJHYoySkYEgDA==
"@tryghost/members-ssr@1.0.14":
version "1.0.14"
resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-1.0.14.tgz#8de4aca6c788f95aad52386f055ff2f5b1c7559c"