mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
Refactoring localStorageService into a prototype based class
This commit is contained in:
parent
b761750766
commit
de3fa1ea01
@ -1,96 +0,0 @@
|
||||
/*
|
||||
* @provide pskl.LocalStrageService
|
||||
*
|
||||
* @require Constants
|
||||
* @require Events
|
||||
*/
|
||||
$.namespace("pskl");
|
||||
|
||||
pskl.LocalStorageService = (function() {
|
||||
|
||||
var frameSheet_;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
var localStorageThrottler_ = null;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
var persistToLocalStorageRequest_ = function() {
|
||||
// Persist to localStorage when drawing. We throttle localStorage accesses
|
||||
// for high frequency drawing (eg mousemove).
|
||||
if(localStorageThrottler_ !== null) {
|
||||
window.clearTimeout(localStorageThrottler_);
|
||||
}
|
||||
localStorageThrottler_ = window.setTimeout(function() {
|
||||
persistToLocalStorage_();
|
||||
localStorageThrottler_ = null;
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
var persistToLocalStorage_ = function() {
|
||||
console.log('[LocalStorage service]: Snapshot stored');
|
||||
window.localStorage.snapShot = frameSheet_.serialize();
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
* TODO(vince): Move that away from LocalStorageService
|
||||
*/
|
||||
var restoreFromLocalStorage_ = function() {
|
||||
|
||||
frameSheet_.deserialize(window.localStorage.snapShot);
|
||||
frameSheet_.setCurrentFrameIndex(0);
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
var cleanLocalStorage_ = function() {
|
||||
console.log('[LocalStorage service]: Snapshot removed');
|
||||
delete window.localStorage.snapShot;
|
||||
};
|
||||
|
||||
return {
|
||||
init: function(frameSheet) {
|
||||
|
||||
if(frameSheet === undefined) {
|
||||
throw "Bad LocalStorageService initialization: <undefined frameSheet>";
|
||||
}
|
||||
frameSheet_ = frameSheet;
|
||||
|
||||
$.subscribe(Events.LOCALSTORAGE_REQUEST, persistToLocalStorageRequest_);
|
||||
},
|
||||
|
||||
// TODO(vincz): Find a good place to put this UI rendering, a service should not render UI.
|
||||
displayRestoreNotification: function() {
|
||||
if(window.localStorage && window.localStorage.snapShot) {
|
||||
var reloadLink = "<a href='#' class='localstorage-restore onclick='piskel.restoreFromLocalStorage()'>reload</a>";
|
||||
var discardLink = "<a href='#' class='localstorage-discard' onclick='piskel.cleanLocalStorage()'>discard</a>";
|
||||
var content = "Non saved version found. " + reloadLink + " or " + discardLink;
|
||||
|
||||
$.publish(Events.SHOW_NOTIFICATION, [{
|
||||
"content": content,
|
||||
"behavior": function(rootNode) {
|
||||
rootNode = $(rootNode);
|
||||
rootNode.click(function(evt) {
|
||||
var target = $(evt.target);
|
||||
if(target.hasClass("localstorage-restore")) {
|
||||
restoreFromLocalStorage_();
|
||||
}
|
||||
else if (target.hasClass("localstorage-discard")) {
|
||||
cleanLocalStorage_();
|
||||
}
|
||||
$.publish(Events.HIDE_NOTIFICATION);
|
||||
});
|
||||
}
|
||||
}]);
|
||||
}
|
||||
}
|
||||
};
|
||||
})();
|
@ -72,7 +72,8 @@ $.namespace("pskl");
|
||||
this.keyManager = new pskl.KeyManager();
|
||||
|
||||
pskl.NotificationService.init();
|
||||
pskl.LocalStorageService.init(frameSheet);
|
||||
this.localStorageService = new pskl.service.LocalStorageService(frameSheet);
|
||||
this.localStorageService.init();
|
||||
|
||||
// TODO: Add comments
|
||||
var framesheetId = this.getFramesheetIdFromUrl();
|
||||
@ -81,7 +82,7 @@ $.namespace("pskl");
|
||||
this.loadFramesheetFromService(framesheetId);
|
||||
} else {
|
||||
this.finishInit();
|
||||
pskl.LocalStorageService.displayRestoreNotification();
|
||||
this.localStorageService.displayRestoreNotification();
|
||||
}
|
||||
|
||||
var drawingLoop = new pskl.rendering.DrawingLoop();
|
||||
|
181
js/service/LocalStorageService.js
Normal file
181
js/service/LocalStorageService.js
Normal file
@ -0,0 +1,181 @@
|
||||
(function () {
|
||||
var ns = $.namespace("pskl.service");
|
||||
|
||||
ns.LocalStorageService = function (framesheet_) {
|
||||
|
||||
if(framesheet_ === undefined) {
|
||||
throw "Bad LocalStorageService initialization: <undefined frameSheet>";
|
||||
}
|
||||
this.framesheet = framesheet_;
|
||||
this.localStorageThrottler_ = null;
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
ns.LocalStorageService.prototype.persistToLocalStorageRequest_ = function () {
|
||||
// Persist to localStorage when drawing. We throttle localStorage accesses
|
||||
// for high frequency drawing (eg mousemove).
|
||||
if(this.localStorageThrottler_ !== null) {
|
||||
window.clearTimeout(this.localStorageThrottler_);
|
||||
}
|
||||
this.localStorageThrottler_ = window.setTimeout($.proxy(function() {
|
||||
this.persistToLocalStorage_();
|
||||
this.localStorageThrottler_ = null;
|
||||
}, this), 1000);
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
ns.LocalStorageService.prototype.persistToLocalStorage_ = function() {
|
||||
|
||||
console.log('[LocalStorage service]: Snapshot stored');
|
||||
window.localStorage.snapShot = this.framesheet.serialize();
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
ns.LocalStorageService.prototype.restoreFromLocalStorage_ = function() {
|
||||
|
||||
this.framesheet.deserialize(window.localStorage.snapShot);
|
||||
this.framesheet.setCurrentFrameIndex(0);
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
ns.LocalStorageService.prototype.cleanLocalStorage_ = function() {
|
||||
console.log('[LocalStorage service]: Snapshot removed');
|
||||
delete window.localStorage.snapShot;
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
ns.LocalStorageService.prototype.init = function(framesheet_) {
|
||||
|
||||
$.subscribe(Events.LOCALSTORAGE_REQUEST, $.proxy(this.persistToLocalStorageRequest_, this));
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
ns.LocalStorageService.prototype.displayRestoreNotification = function() {
|
||||
if(window.localStorage && window.localStorage.snapShot) {
|
||||
var reloadLink = "<a href='#' class='localstorage-restore onclick='piskel.restoreFromLocalStorage()'>reload</a>";
|
||||
var discardLink = "<a href='#' class='localstorage-discard' onclick='piskel.cleanLocalStorage()'>discard</a>";
|
||||
var content = "Non saved version found. " + reloadLink + " or " + discardLink;
|
||||
|
||||
$.publish(Events.SHOW_NOTIFICATION, [{
|
||||
"content": content,
|
||||
"behavior": $.proxy(function(rootNode) {
|
||||
rootNode = $(rootNode);
|
||||
rootNode.click($.proxy(function(evt) {
|
||||
var target = $(evt.target);
|
||||
if(target.hasClass("localstorage-restore")) {
|
||||
this.restoreFromLocalStorage_();
|
||||
}
|
||||
else if (target.hasClass("localstorage-discard")) {
|
||||
this.cleanLocalStorage_();
|
||||
}
|
||||
$.publish(Events.HIDE_NOTIFICATION);
|
||||
}, this));
|
||||
}, this)
|
||||
}]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// var frameSheet_;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
// var localStorageThrottler_ = null;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
/*var persistToLocalStorageRequest_ = function() {
|
||||
// Persist to localStorage when drawing. We throttle localStorage accesses
|
||||
// for high frequency drawing (eg mousemove).
|
||||
if(localStorageThrottler_ !== null) {
|
||||
window.clearTimeout(localStorageThrottler_);
|
||||
}
|
||||
localStorageThrottler_ = window.setTimeout(function() {
|
||||
persistToLocalStorage_();
|
||||
localStorageThrottler_ = null;
|
||||
}, 1000);
|
||||
};
|
||||
*/
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
/*
|
||||
var persistToLocalStorage_ = function() {
|
||||
console.log('[LocalStorage service]: Snapshot stored');
|
||||
window.localStorage.snapShot = frameSheet_.serialize();
|
||||
};
|
||||
*/
|
||||
|
||||
/**
|
||||
* @private
|
||||
* TODO(vince): Move that away from LocalStorageService
|
||||
*/
|
||||
/*
|
||||
|
||||
var restoreFromLocalStorage_ = function() {
|
||||
|
||||
frameSheet_.deserialize(window.localStorage.snapShot);
|
||||
frameSheet_.setCurrentFrameIndex(0);
|
||||
};
|
||||
*/
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
/*
|
||||
var cleanLocalStorage_ = function() {
|
||||
console.log('[LocalStorage service]: Snapshot removed');
|
||||
delete window.localStorage.snapShot;
|
||||
};
|
||||
*//*
|
||||
return {
|
||||
init: function(frameSheet) {
|
||||
|
||||
if(frameSheet === undefined) {
|
||||
throw "Bad LocalStorageService initialization: <undefined frameSheet>";
|
||||
}
|
||||
frameSheet_ = frameSheet;
|
||||
|
||||
$.subscribe(Events.LOCALSTORAGE_REQUEST, persistToLocalStorageRequest_);
|
||||
},
|
||||
|
||||
// TODO(vincz): Find a good place to put this UI rendering, a service should not render UI.
|
||||
displayRestoreNotification: function() {
|
||||
if(window.localStorage && window.localStorage.snapShot) {
|
||||
var reloadLink = "<a href='#' class='localstorage-restore onclick='piskel.restoreFromLocalStorage()'>reload</a>";
|
||||
var discardLink = "<a href='#' class='localstorage-discard' onclick='piskel.cleanLocalStorage()'>discard</a>";
|
||||
var content = "Non saved version found. " + reloadLink + " or " + discardLink;
|
||||
|
||||
$.publish(Events.SHOW_NOTIFICATION, [{
|
||||
"content": content,
|
||||
"behavior": function(rootNode) {
|
||||
rootNode = $(rootNode);
|
||||
rootNode.click(function(evt) {
|
||||
var target = $(evt.target);
|
||||
if(target.hasClass("localstorage-restore")) {
|
||||
restoreFromLocalStorage_();
|
||||
}
|
||||
else if (target.hasClass("localstorage-discard")) {
|
||||
cleanLocalStorage_();
|
||||
}
|
||||
$.publish(Events.HIDE_NOTIFICATION);
|
||||
});
|
||||
}
|
||||
}]);
|
||||
}
|
||||
}
|
||||
};*/
|
||||
})();
|
Loading…
Reference in New Issue
Block a user