mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 18:31:57 +03:00
7fae5b8341
refs https://github.com/TryGhost/Team/issues/1212 This now emits the event when the service is reconfigured, rather than when we issue the reconfigure command, which causes the event and the action to be run in the wrong order. This would then cause knock on effects of having the database in an undefined state - with stripe data in not linked to the current Stripe account.
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
const _ = require('lodash');
|
|
const logging = require('@tryghost/logging');
|
|
const StripeAPIService = require('@tryghost/members-stripe-service');
|
|
|
|
const config = require('../../../shared/config');
|
|
const settings = require('../../../shared/settings-cache');
|
|
const events = require('../../lib/common/events');
|
|
|
|
const {getConfig} = require('./config');
|
|
|
|
const api = new StripeAPIService({
|
|
logger: logging,
|
|
config: {}
|
|
});
|
|
|
|
const stripeKeySettings = [
|
|
'stripe_publishable_key',
|
|
'stripe_secret_key',
|
|
'stripe_connect_publishable_key',
|
|
'stripe_connect_secret_key'
|
|
];
|
|
|
|
function configureApi() {
|
|
const cfg = getConfig(settings, config);
|
|
if (cfg) {
|
|
api.configure(cfg);
|
|
}
|
|
}
|
|
|
|
const debouncedConfigureApi = _.debounce(() => {
|
|
configureApi();
|
|
events.emit('services.stripe.reconfigured');
|
|
}, 600);
|
|
|
|
module.exports = {
|
|
async init() {
|
|
configureApi();
|
|
events.on('settings.edited', function (model) {
|
|
if (!stripeKeySettings.includes(model.get('key'))) {
|
|
return;
|
|
}
|
|
debouncedConfigureApi();
|
|
});
|
|
},
|
|
|
|
api
|
|
};
|