@shopgate/pwa-webcheckout-shopify
Version:
Webcheckout Shopify library for the Shopgate Connect PWA.
10 lines • 1.75 kB
JavaScript
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);