diff options
Diffstat (limited to 'hooks/authenticatedFetch.js')
-rw-r--r-- | hooks/authenticatedFetch.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/hooks/authenticatedFetch.js b/hooks/authenticatedFetch.js new file mode 100644 index 0000000..4b57ff7 --- /dev/null +++ b/hooks/authenticatedFetch.js @@ -0,0 +1,25 @@ +function authenticatedFetch(uri, options) { + var AppBridge = window['app-bridge']; + var app = AppBridge.createApp({ + apiKey: '', + host: '' + }); + var fetchFunction = window['app-bridge-utils'].authenticatedFetch(app); + return async (uri, options) => { + var response = await fetchFunction(uri, options); + var headers = response.headers; + if (headers.get("X-Shopify-API-Request-Failure-Reauthorize") + === "1") { + var authUrlHeader = headers.get( + "X-Shopify-API-Request-Failure-Reauthorize-Url") + || `/api/auth`; + var Redirect = AppBridge.actions.Redirect; + Redirect.create(app).dispatch(Redirect.Action.REMOTE, + authUrlHeader.startsWith("/") + ? `https://${window.location.host}${authUrlHeader}` + : authUrlHeader + ); + } + return response; + }; +} |