UNPKG

@apite/magento2-utility

Version:

Shopgate WebCheckout utility for Magento 2 extensions

87 lines (76 loc) 2.47 kB
'use strict' const logDecorator = require('./logDecorator') const { decorateError } = logDecorator() /** * Select storage to use: device or user (if logged in) * * @param {ApiteM2Utility.PipelineContext} context * @return ApiteM2Utility.PipelineStorage * @private */ const _getStorage = context => context.meta.userId ? context.storage.user : context.storage.device /** * @param {ApiteM2Utility.PipelineContext} context * @return {Promise<string>} */ const getCartId = async context => _getStorage(context).get('cartId') /** * @param {ApiteM2Utility.PipelineContext} context * @return {Promise<string>} */ const getCustomerAuthToken = async context => _getStorage(context).get('authToken') /** * Saves the current hashed cartId for guest & customer. * GraphQL cart CRUD requires cartId to be provided for both * * @param {string} cartId - guest cartId * @param {ApiteM2Utility.PipelineContext} context * @returns Promise<void> */ const saveCartId = async (cartId, context) => _getStorage(context).set('cartId', cartId).catch(err => context.log.error(decorateError(err), 'Failed to save guest cartId.') ) /** * Saves the current checkout token into internal storage (user or device) * * @param {string} autToken - customer Bearer token * @param {ApiteM2Utility.PipelineContext} context * @returns Promise<void> */ const saveCustomerAuthToken = async (autToken, context) => _getStorage(context).set('authToken', autToken).catch(err => context.log.error(decorateError(err), 'Failed to save customer auth token.') ) /** * @param {string} couponCode * @param {ApiteM2Utility.PipelineContext} context * @return {Promise<void>} */ const saveCouponCode = async (couponCode, context) => { return _getStorage(context).set('couponCode', couponCode).catch(err => { context.log.error(decorateError(err), 'Failed to save coupon code') }) } /** * @param {ApiteM2Utility.PipelineContext} context * @return {Promise<void>} */ const removeCouponCode = async context => _getStorage(context).del('couponCode').catch(err => context.log.error(decorateError(err), 'Failed to remove coupon code') ) /** * @param {ApiteM2Utility.PipelineContext} context * @return {Promise<string>} */ const getCouponCode = async context => _getStorage(context).get('couponCode') module.exports = { getCouponCode, getCartId, getCustomerAuthToken, removeCouponCode, saveCouponCode, saveCartId, saveCustomerAuthToken }