mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
Fix services to use new serializer format
This commit is contained in:
parent
dbbd57ae28
commit
c2b283be67
@ -53,7 +53,7 @@
|
||||
var isSnapshot = action.type === ns.HistoryService.SNAPSHOT;
|
||||
var isAtAutoSnapshotInterval = this.currentIndex % ns.HistoryService.SNAPSHOT_PERIOD === 0;
|
||||
if (isSnapshot || isAtAutoSnapshotInterval) {
|
||||
state.piskel = this.piskelController.serialize(true);
|
||||
state.piskel = this.piskelController.serialize();
|
||||
}
|
||||
|
||||
this.stateQueue.push(state);
|
||||
@ -124,13 +124,7 @@
|
||||
var state = this.stateQueue[stateIndex];
|
||||
var piskelSnapshot = state.piskel;
|
||||
|
||||
// If the snapshot is stringified, parse it and backup the result for faster access next time
|
||||
// FIXME : Memory consumption might go crazy if we keep unpacking big piskels indefinitely
|
||||
// ==> should ensure I remove some of them :)
|
||||
if (typeof piskelSnapshot === 'string') {
|
||||
piskelSnapshot = JSON.parse(piskelSnapshot);
|
||||
state.piskel = piskelSnapshot;
|
||||
}
|
||||
state.piskel = piskelSnapshot;
|
||||
|
||||
return piskelSnapshot;
|
||||
};
|
||||
|
@ -24,7 +24,7 @@
|
||||
return Q.reject('Invalid file name');
|
||||
}
|
||||
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel, false);
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel);
|
||||
savePath = this.addExtensionIfNeeded_(savePath);
|
||||
piskel.savePath = savePath;
|
||||
piskel.setName(this.extractFilename_(savePath));
|
||||
@ -37,12 +37,11 @@
|
||||
|
||||
ns.DesktopStorageService.prototype.load = function (savePath) {
|
||||
pskl.utils.FileUtilsDesktop.readFile(savePath).then(function (content) {
|
||||
pskl.utils.PiskelFileUtils.decodePiskelFile(content, function (piskel, descriptor, fps) {
|
||||
piskel.setDescriptor(descriptor);
|
||||
pskl.utils.PiskelFileUtils.decodePiskelFile(content, function (piskel, extra) {
|
||||
// store save path so we can re-save without opening the save dialog
|
||||
piskel.savePath = savePath;
|
||||
pskl.app.piskelController.setPiskel(piskel);
|
||||
pskl.app.previewController.setFPS(fps);
|
||||
pskl.app.previewController.setFPS(extra.fps);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -5,21 +5,19 @@
|
||||
ns.FileDownloadStorageService.prototype.init = function () {};
|
||||
|
||||
ns.FileDownloadStorageService.prototype.save = function (piskel) {
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel, false);
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel);
|
||||
var deferred = Q.defer();
|
||||
|
||||
pskl.utils.BlobUtils.stringToBlob(serialized, function(blob) {
|
||||
var piskelName = piskel.getDescriptor().name;
|
||||
var timestamp = pskl.utils.DateUtils.format(new Date(), '{{Y}}{{M}}{{D}}-{{H}}{{m}}{{s}}');
|
||||
var fileName = piskelName + '-' + timestamp + '.piskel';
|
||||
var piskelName = piskel.getDescriptor().name;
|
||||
var timestamp = pskl.utils.DateUtils.format(new Date(), '{{Y}}{{M}}{{D}}-{{H}}{{m}}{{s}}');
|
||||
var fileName = piskelName + '-' + timestamp + '.piskel';
|
||||
|
||||
try {
|
||||
pskl.utils.FileUtils.downloadAsFile(blob, fileName);
|
||||
deferred.resolve();
|
||||
} catch (e) {
|
||||
deferred.reject(e.message);
|
||||
}
|
||||
}.bind(this), 'application/piskel+json');
|
||||
try {
|
||||
pskl.utils.FileUtils.downloadAsFile(serialized, fileName);
|
||||
deferred.resolve();
|
||||
} catch (e) {
|
||||
deferred.reject(e.message);
|
||||
}
|
||||
|
||||
return deferred.promise;
|
||||
};
|
||||
|
@ -13,7 +13,13 @@
|
||||
ns.LocalStorageService.prototype.save = function(piskel) {
|
||||
var name = piskel.getDescriptor().name;
|
||||
var description = piskel.getDescriptor().description;
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel, false);
|
||||
var serialized = pskl.utils.Serializer.serializePiskel(piskel);
|
||||
|
||||
var serializedString = '';
|
||||
var uint16 = new Uint16Array(serialized);
|
||||
for (var i = 0, length = uint16.length; i < length; i++) {
|
||||
serializedString += String.fromCharCode(uint16[i]);
|
||||
}
|
||||
|
||||
if (pskl.app.localStorageService.getPiskel(name)) {
|
||||
var confirmOverwrite = window.confirm('There is already a piskel saved as ' + name + '. Overwrite ?');
|
||||
@ -25,7 +31,7 @@
|
||||
try {
|
||||
this.removeFromKeys_(name);
|
||||
this.addToKeys_(name, description, Date.now());
|
||||
window.localStorage.setItem('piskel.' + name, serialized);
|
||||
window.localStorage.setItem('piskel.' + name, serializedString);
|
||||
return Q.resolve();
|
||||
} catch (e) {
|
||||
return Q.reject(e.message);
|
||||
@ -35,16 +41,15 @@
|
||||
ns.LocalStorageService.prototype.load = function(name) {
|
||||
var piskelString = this.getPiskel(name);
|
||||
var key = this.getKey_(name);
|
||||
var serializedPiskel = JSON.parse(piskelString);
|
||||
// FIXME : should be moved to deserializer
|
||||
// Deserializer should call callback with descriptor + fps information
|
||||
var fps = serializedPiskel.piskel.fps;
|
||||
var description = serializedPiskel.piskel.description;
|
||||
|
||||
var serializedPiskel = new Uint16Array(piskelString.length);
|
||||
for (var i = 0, length = piskelString.length; i < length; i++) {
|
||||
serializedPiskel[i] = piskelString.charCodeAt(i);
|
||||
}
|
||||
|
||||
pskl.utils.serialization.Deserializer.deserialize(serializedPiskel, function (piskel) {
|
||||
piskel.setDescriptor(new pskl.model.piskel.Descriptor(name, description, true));
|
||||
pskl.utils.serialization.Deserializer.deserialize(serializedPiskel.buffer, function (piskel, extra) {
|
||||
pskl.app.piskelController.setPiskel(piskel);
|
||||
pskl.app.previewController.setFPS(fps);
|
||||
pskl.app.previewController.setFPS(extra.fps);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -11,30 +11,25 @@
|
||||
* @param {Function} onError NOT USED YET
|
||||
*/
|
||||
loadFromFile : function (file, onSuccess, onError) {
|
||||
pskl.utils.FileUtils.readFile(file, function (content) {
|
||||
var rawPiskel = pskl.utils.Base64.toText(content);
|
||||
pskl.utils.FileUtils.readFileAsArrayBuffer(file, function (content) {
|
||||
ns.PiskelFileUtils.decodePiskelFile(
|
||||
rawPiskel,
|
||||
function (piskel, descriptor, fps) {
|
||||
content,
|
||||
function (piskel, extra) {
|
||||
// if using Node-Webkit, store the savePath on load
|
||||
// Note: the 'path' property is unique to Node-Webkit, and holds the full path
|
||||
if (pskl.utils.Environment.detectNodeWebkit()) {
|
||||
piskel.savePath = file.path;
|
||||
}
|
||||
onSuccess(piskel, descriptor, fps);
|
||||
onSuccess(piskel, extra);
|
||||
},
|
||||
onError
|
||||
);
|
||||
});
|
||||
},
|
||||
|
||||
decodePiskelFile : function (rawPiskel, onSuccess, onError) {
|
||||
var serializedPiskel = JSON.parse(rawPiskel);
|
||||
var fps = serializedPiskel.piskel.fps;
|
||||
var piskel = serializedPiskel.piskel;
|
||||
var descriptor = new pskl.model.piskel.Descriptor(piskel.name, piskel.description, true);
|
||||
pskl.utils.serialization.Deserializer.deserialize(serializedPiskel, function (piskel) {
|
||||
onSuccess(piskel, descriptor, fps);
|
||||
decodePiskelFile : function (serializedPiskel, onSuccess, onError) {
|
||||
pskl.utils.serialization.Deserializer.deserialize(serializedPiskel, function (piskel, extra) {
|
||||
onSuccess(piskel, extra);
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user