From 97060e25e19fb54f0495ba5dbab9ab7939aad517 Mon Sep 17 00:00:00 2001 From: Kirill Platonov Date: Fri, 5 Jul 2024 18:28:56 +0200 Subject: [PATCH] Simplify app bridge redirect --- .../shopify_app/app_bridge_redirect.js | 10 --------- .../javascripts/shopify_app/redirect.js | 10 +++------ .../shopify_app/app_bridge_redirect_test.js | 21 ------------------- test/javascripts/shopify_app/redirect_test.js | 19 ++++++++++------- 4 files changed, 14 insertions(+), 46 deletions(-) delete mode 100644 app/assets/javascripts/shopify_app/app_bridge_redirect.js delete mode 100644 test/javascripts/shopify_app/app_bridge_redirect_test.js diff --git a/app/assets/javascripts/shopify_app/app_bridge_redirect.js b/app/assets/javascripts/shopify_app/app_bridge_redirect.js deleted file mode 100644 index f1ee2532e..000000000 --- a/app/assets/javascripts/shopify_app/app_bridge_redirect.js +++ /dev/null @@ -1,10 +0,0 @@ -(function(window) { - function appBridgeRedirect(url) { - var normalizedLink = document.createElement('a'); - normalizedLink.href = url; - - open(normalizedLink.href, '_top'); - } - - window.appBridgeRedirect = appBridgeRedirect; -})(window); diff --git a/app/assets/javascripts/shopify_app/redirect.js b/app/assets/javascripts/shopify_app/redirect.js index 78bb6684e..1d3a839aa 100644 --- a/app/assets/javascripts/shopify_app/redirect.js +++ b/app/assets/javascripts/shopify_app/redirect.js @@ -1,5 +1,3 @@ -//= require ./app_bridge_redirect.js - (function () { function redirect() { var redirectTargetElement = document.getElementById("redirection-target"); @@ -9,12 +7,10 @@ } var targetInfo = JSON.parse(redirectTargetElement.dataset.target); + var normalizedLink = document.createElement('a'); + normalizedLink.href = targetInfo.url; - if (window['shopify']) { - window.appBridgeRedirect(targetInfo.url); - } else { - window.top.location.href = targetInfo.url; - } + open(normalizedLink.href, '_top'); } document.addEventListener("DOMContentLoaded", redirect); diff --git a/test/javascripts/shopify_app/app_bridge_redirect_test.js b/test/javascripts/shopify_app/app_bridge_redirect_test.js deleted file mode 100644 index a89cf01d9..000000000 --- a/test/javascripts/shopify_app/app_bridge_redirect_test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { assert } = require("chai"); - -suite('appBridgeRedirect', () => { - const sandbox = sinon.createSandbox(); - const url = '/settings'; - - teardown(() => { - sandbox.restore(); - }); - - test('calls App Bridge redirect to normalized url', () => { - const open = sinon.spy(); - sandbox.stub(window, 'open').callsFake(open); - - appBridgeRedirect(url); - - assert(open.calledOnce); - assert.match(open.lastCall.args[0], new RegExp(`${url}$`)); - assert.equal(open.lastCall.args[1], '_top'); - }); -}); diff --git a/test/javascripts/shopify_app/redirect_test.js b/test/javascripts/shopify_app/redirect_test.js index 9ffb380e1..3b276a82e 100644 --- a/test/javascripts/shopify_app/redirect_test.js +++ b/test/javascripts/shopify_app/redirect_test.js @@ -1,6 +1,8 @@ -suite('redirect', () => { - const redirectHelperSandbox = sinon.createSandbox(); +const { assert } = require("chai"); +suite('redirect', () => { + const sandbox = sinon.createSandbox(); + const open = sinon.spy(); let contentContainer; let url = '/settings'; @@ -10,18 +12,19 @@ suite('redirect', () => { contentContainer.setAttribute('id', 'redirection-target'); contentContainer.dataset['target'] = JSON.stringify({url}); document.body.appendChild(contentContainer); - - window['shopify'] = {}; - redirectHelperSandbox.stub(window, 'appBridgeRedirect').callsFake(() => {}); + sandbox.stub(window, 'open').callsFake(open); }); teardown(() => { - redirectHelperSandbox.restore(); + sandbox.restore(); document.body.removeChild(contentContainer); }); - test('calls appBridgeRedirect', () => { + test('opens redirect url', () => { require('../../../app/assets/javascripts/shopify_app/redirect'); - sinon.assert.calledWith(window.appBridgeRedirect, url); + + assert(open.calledOnce); + assert.match(open.lastCall.args[0], new RegExp(`${url}$`)); + assert.equal(open.lastCall.args[1], '_top'); }); });