mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
|
(function () {
|
||
|
var ns = $.namespace('pskl.service');
|
||
|
|
||
|
ns.BeforeUnloadService = function (piskelController) {
|
||
|
this.piskelController = piskelController;
|
||
|
};
|
||
|
|
||
|
ns.BeforeUnloadService.prototype.init = function () {
|
||
|
if (pskl.utils.Environment.detectNodeWebkit()) {
|
||
|
// Add a dedicated listener to window 'close' event in nwjs environment.
|
||
|
var win = require('nw.gui').Window.get();
|
||
|
win.on('close', this.onNwWindowClose.bind(this, win));
|
||
|
}
|
||
|
|
||
|
window.addEventListener('beforeunload', this.onBeforeUnload.bind(this));
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* In nw.js environment "onbeforeunload" is not triggered when closing the window.
|
||
|
* Polyfill the behavior here.
|
||
|
*/
|
||
|
ns.BeforeUnloadService.prototype.onNwWindowClose = function (win) {
|
||
|
var msg = this.onBeforeUnload();
|
||
|
if (msg) {
|
||
|
if (!window.confirm(msg)) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
win.close(true);
|
||
|
};
|
||
|
|
||
|
ns.BeforeUnloadService.prototype.onBeforeUnload = function (evt) {
|
||
|
pskl.app.backupService.backup();
|
||
|
if (pskl.app.savedStatusService.isDirty()) {
|
||
|
var confirmationMessage = 'Your Piskel seems to have unsaved changes';
|
||
|
|
||
|
evt = evt || window.event;
|
||
|
if (evt) {
|
||
|
evt.returnValue = confirmationMessage;
|
||
|
}
|
||
|
return confirmationMessage;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
})();
|