UNPKG

@shopgate/pwa-webcheckout-shopify

Version:

Webcheckout Shopify library for the Shopgate Connect PWA.

10 lines 1.75 kB
import{mutable}from'@shopgate/pwa-common/helpers/redux';import HttpRequest from'@shopgate/pwa-core/classes/HttpRequest';import requestShopifyLogout from"../action-creators/requestShopifyLogout";import errorShopifyLogout from"../action-creators/errorShopifyLogout";import successShopifyLogout from"../action-creators/successShopifyLogout";import{getLogoutUrl,getLogoutSuccessUrl}from"../selectors";/** * @typedef {Object} LogoutOptions * @property {Object.<string, string>} [headers] - Optional request headers. */ /** * Log out the current user. * @param {LogoutOptions} [options] - Optional options containing request headers. * @returns {Function} A Redux thunk. */var webCheckoutLogout=function webCheckoutLogout(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return function(dispatch){var logoutUrl=getLogoutUrl();if(!logoutUrl){// When no logout url is available it doesn't make sense to do the request return;}dispatch(requestShopifyLogout());var request=new HttpRequest(logoutUrl);if(options.headers)request.setHeaders(options.headers);request.dispatch().then(function(response){var _response$headers=response.headers,_response$headers2=_response$headers===void 0?{}:_response$headers,location=_response$headers2.location,statusCode=response.statusCode;var logoutSuccessUrl=getLogoutSuccessUrl();// When a success url is available it needs to be considered at the response evaluation var urlCheckValid=!logoutSuccessUrl||location&&location.startsWith(logoutSuccessUrl);if(statusCode===302&&urlCheckValid){dispatch(successShopifyLogout());}else{dispatch(errorShopifyLogout());}})["catch"](function(){dispatch(errorShopifyLogout());});};};/** @mixes {MutableFunction} */export default mutable(webCheckoutLogout);