Send info to open popups to inform user that main window has been reloaded.

This commit is contained in:
nathan 2022-09-15 15:14:16 -06:00
parent 38e8df223d
commit a3e2850b05
2 changed files with 40 additions and 0 deletions

View File

@ -70,6 +70,7 @@ window.fw_base = (function(){ "use strict"; return Class.extend(
// keep track of opened popups
this.popups = [];
window.addEventListener("beforeunload", this.beforeUnloadHandler.bind(this));
// initiate dark mode
@ -1042,6 +1043,18 @@ window.fw_base = (function(){ "use strict"; return Class.extend(
return popups.flat();
},
/**
* If this window is closed, notify popups about it
* @param event
*/
beforeUnloadHandler: function (event)
{
this.popups.forEach(function (popup)
{
popup.egw_rejoin(popup);
});
},
/**
* Get application window
* @param {type} _app

View File

@ -476,3 +476,30 @@ window.et2_call = function(_func)
{
return egw.applyFunc(_func, [].slice.call(arguments, 1), window);
}
/**
* Main window was reloaded, rejoin
*/
window.egw_rejoin = function ()
{
let warning = egw(this).message(egw.lang("Lost connection to main window"), "warning");
window.setTimeout(function ()
{
opener.addEventListener("load", () =>
{
/* It takes more than just re-setting this.framework to get things working again
let reconnecting = egw(this).message("Reconnecting...");
window.setTimeout(() =>
{
opener.console.log("Re-set framework");
warning.close();
reconnecting.close();
this.framework = this.opener.framework;
this.framework.egw_appWindow().console.log("Popup %s rejoined", this.location.href);
}, 5000);
*/
});
}.bind(window), 500);
}