Skip to content

Commit 012faa6

Browse files
samyokwalterbender
authored andcommitted
Catch error when localStorage runs out (#1923)
* Catch error when localStorage runs out * Only catch relevant errors * Catch via DOMException codes instead and update text
1 parent 2ca30bf commit 012faa6

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

js/activity.js

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4264,22 +4264,26 @@ function Activity() {
42644264
console.log('overwriting session data');
42654265
var data = prepareExport();
42664266
var svgData = doSVG(canvas, logo, turtles, 320, 240, 320 / canvas.width);
4267-
if (svgData === null || svgData === '') {
4268-
this.planet.ProjectStorage.saveLocally(data, null);
4269-
} else {
4270-
var img = new Image();
4271-
var t = this;
4272-
img.onload = function () {
4273-
var bitmap = new createjs.Bitmap(img);
4274-
var bounds = bitmap.getBounds();
4275-
bitmap.cache(bounds.x, bounds.y, bounds.width, bounds.height);
4276-
try {
4277-
t.planet.ProjectStorage.saveLocally(data, bitmap.bitmapCache.getCacheDataURL());
4278-
} catch (e) {
4279-
console.log(e);
4280-
}
4281-
};
4282-
img.src = 'data:image/svg+xml;base64,' + window.btoa(unescape(encodeURIComponent(svgData)));
4267+
try {
4268+
4269+
if (svgData === null || svgData === '') {
4270+
this.planet.ProjectStorage.saveLocally(data, null);
4271+
} else {
4272+
var img = new Image();
4273+
var t = this;
4274+
img.onload = function () {
4275+
var bitmap = new createjs.Bitmap(img);
4276+
var bounds = bitmap.getBounds();
4277+
bitmap.cache(bounds.x, bounds.y, bounds.width, bounds.height);
4278+
t.planet.ProjectStorage.saveLocally(data, bitmap.bitmapCache.getCacheDataURL());
4279+
};
4280+
img.src = 'data:image/svg+xml;base64,' + window.btoa(unescape(encodeURIComponent(svgData)));
4281+
}
4282+
} catch (e) {
4283+
console.log(e);
4284+
if(e.code === DOMException.QUOTA_EXCEEDED_ERR || e.message === "Not enough space to save locally")
4285+
textMsg(_("Error: Unable to save because you ran out of local storage. Try deleting some saved projects."));
4286+
else throw e;
42834287
}
42844288
//if (sugarizerCompatibility.isInsideSugarizer()) {
42854289
// sugarizerCompatibility.saveLocally();

planet/js/ProjectStorage.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)