fix(donate): handle missing stripe keys (#37847)

* fix: gracefully handle missing stripe keys

* fix: remove state updates from render (donate)
This commit is contained in:
Oliver Eyton-Williams 2019-11-29 21:11:31 +01:00 committed by mrugesh
parent 81bb677def
commit c660b389a8
4 changed files with 28 additions and 8 deletions

View File

@ -51,6 +51,19 @@ exports.createPages = function createPages({ graphql, actions, reporter }) {
);
}
}
if (!env.stripePublicKey || !env.servicebotId) {
if (process.env.FREECODECAMP_NODE_ENV === 'production') {
throw new Error(
'Stripe public key and Servicebot id are required to start the client!'
);
} else {
reporter.info(
'Stripe public key or Servicebot id missing or invalid. Required for' +
' donations.'
);
}
}
const { createPage } = actions;
return new Promise((resolve, reject) => {

View File

@ -60,6 +60,7 @@ class DonateFormChildViewForHOC extends Component {
this.handleSubmit = this.handleSubmit.bind(this);
this.postDonation = this.postDonation.bind(this);
this.resetDonation = this.resetDonation.bind(this);
this.hideAmountOptions(false);
}
getUserEmail() {
@ -226,7 +227,6 @@ class DonateFormChildViewForHOC extends Component {
reset: this.resetDonation
});
}
this.hideAmountOptions(false);
return this.renderDonateForm();
}
}

View File

@ -61,11 +61,12 @@ export class DonatePage extends Component {
handleStripeLoad() {
// Create Stripe instance once Stripe.js loads
console.info('stripe has loaded');
this.setState(state => ({
...state,
stripe: window.Stripe(stripePublicKey)
}));
if (stripePublicKey) {
this.setState(state => ({
...state,
stripe: window.Stripe(stripePublicKey)
}));
}
}
enableDonationSettingsPage(enableSettings = true) {

View File

@ -30,8 +30,14 @@ const locations = {
module.exports = Object.assign(locations, {
locale,
stripePublicKey,
servicebotId,
stripePublicKey:
!stripePublicKey || stripePublicKey === 'pk_from_stripe_dashboard'
? null
: stripePublicKey,
servicebotId:
!servicebotId || servicebotId === 'servicebot_id_from_servicebot_dashboard'
? null
: servicebotId,
algoliaAppId:
!algoliaAppId || algoliaAppId === 'Algolia app id from dashboard'
? null