diff --git a/cartridges/int_bolt_core/cartridge/scripts/services/utils/preferences.js b/cartridges/int_bolt_core/cartridge/scripts/services/utils/preferences.js index 63ea010..40efd9c 100644 --- a/cartridges/int_bolt_core/cartridge/scripts/services/utils/preferences.js +++ b/cartridges/int_bolt_core/cartridge/scripts/services/utils/preferences.js @@ -34,7 +34,8 @@ exports.getSitePreferences = function () { boltCdnUrl: boltCdnUrl, boltMultiPublishableKey: boltMultiPublishableKey, blockedCharactersList: blockedCharactersList, - boltEnableSessionRecording: Site.getCurrent().getCustomPreferenceValue('boltEnableSessionRecording') || false + boltEnableSessionRecording: Site.getCurrent().getCustomPreferenceValue('boltEnableSessionRecording') || false, + sfccBaseVersion: getSFCCBaseVersion() }; }; @@ -90,3 +91,22 @@ exports.getSystemPreference = function (preferenceID) { } return System.getPreferences().getCustom()[preferenceID]; }; + +/** + * Returns the first digit configured in SFCC base version. "6.1.2" returns 6 + * @returns {number} the first number + */ +function getSFCCBaseVersion() { + var version = 5; + var sfccBaseVersion = Site.getCurrent().getCustomPreferenceValue('sfccBaseVersion'); + if (empty(sfccBaseVersion)) { + return baseVersion; + } + + var baseVersion = sfccBaseVersion.split('.'); + if (!empty(baseVersion)) { + version = parseInt(baseVersion[0], 10); + } + + return version; +} diff --git a/cartridges/int_bolt_sfra/cartridge/client/default/js/boltModalConfigure.js b/cartridges/int_bolt_sfra/cartridge/client/default/js/boltModalConfigure.js index bb2b76b..a419324 100644 --- a/cartridges/int_bolt_sfra/cartridge/client/default/js/boltModalConfigure.js +++ b/cartridges/int_bolt_sfra/cartridge/client/default/js/boltModalConfigure.js @@ -15,6 +15,7 @@ $(document).ready(function () { $('[data-tid="instant-bolt-checkout-button"]').children().replaceWith($('[data-tid="instant-bolt-checkout-button"]').children().clone()); var createBoltOrderUrl = $('.create-bolt-order-url').val(); + var sfccBaseVersion = $('#sfccBaseVersion').val(); // add an event handler to Bolt button's click checkoutBoltButton.click(function (e) { @@ -29,7 +30,13 @@ $(document).ready(function () { id: data.basketID }; - var boltButtonApp = BoltCheckout.configure(cart, data.hints, null); // eslint-disable-line no-undef + var boltButtonApp; + if (sfccBaseVersion >= 6) { + boltButtonApp = BoltCheckout.configure(cart, data.hints, callbacks); // eslint-disable-line no-undef + } else { + boltButtonApp = BoltCheckout.configure(cart, data.hints, null); // eslint-disable-line no-undef + } + // don't open bolt modal for apple pay if ($(e.target).attr('data-tid') !== 'apple-pay-button') { boltButtonApp.open(); @@ -40,4 +47,62 @@ $(document).ready(function () { }); } }, 100); + var successRedirect = $('#successRedirect').val(); + var sfccData; + var callbacks = { + close: function () { + // This function is called when the Bolt checkout modal is closed. + if (sfccData) { + var redirect = $('