// wrapper to handle errors & be easier function post(data, reciever, importLocation) { try { reciever.postMessage( { p4: data, }, importLocation ); } catch (e) { console.warn("Cannot post message", e); } } /** * * @param {string} importLocation Tries to listen for messages from this location. * Messages with the proper format get saved to local storage. * @returns {void} */ function restore(importLocation) { const opener = window.opener || window.parent; if (!opener || opener === window) { // exit if not found console.warn("External import stopped; parent window not found"); return; } // when WE get a post window.addEventListener("message", (e) => { if (e.origin !== importLocation) { return; } const data = e.data && e.data.p4; if (!data) { return; } // data: key, value if (data.type === "data") { localStorage.setItem(String(data.key), String(data.value)); } // we done here if (data.type === "finished") { alert('All local data has been saved again!'); } }); post({ type: "validate" }, opener, importLocation); } export default restore;