From ee11ef5cf477fbadbcf44087ee55609b2f4ab394 Mon Sep 17 00:00:00 2001 From: Fabien O'Carroll Date: Fri, 12 Apr 2019 11:36:43 +0200 Subject: [PATCH] Added lazyLoad support for auth pages no-issue --- ghost/sdk/layer2/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ghost/sdk/layer2/index.js b/ghost/sdk/layer2/index.js index e1d80f6f5c..3fcbf53537 100644 --- a/ghost/sdk/layer2/index.js +++ b/ghost/sdk/layer2/index.js @@ -11,7 +11,7 @@ module.exports = function layer2(options) { container }); - var loadAuth = loadFrame(authUrl, container).then(function (frame) { + var loadAuth = lazyLoadFrame(authUrl, container).then(function (frame) { frame.style.position = 'fixed'; frame.style.width = '100%'; frame.style.height = '100%'; @@ -22,7 +22,7 @@ module.exports = function layer2(options) { }); function openAuth(hash, query = '') { - return loadAuth.then(function (frame) { + return loadAuth().then(function (frame) { return new Promise(function (resolve) { frame.src = `${authUrl}#${hash}?${query}`; frame.style.display = 'block'; @@ -71,6 +71,17 @@ module.exports = function layer2(options) { }); }; +function lazyLoadFrame(src, container) { + let promise; + return function getFrame() { + if (promise) { + return promise; + } + promise = loadFrame(src, container); + return getFrame(); + } +} + function loadFrame(src, container = document.body) { return new Promise(function (resolve) { const frame = document.createElement('iframe');