1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2025-03-03 15:02:27 +02:00

Improving local storing handling by try-cache all setItem calls and resetting storage on failure. Fixes: #170

This commit is contained in:
Patrik J. Braun 2020-09-06 10:23:09 +02:00
parent 1cc95bb925
commit 0d2b59a412

View File

@ -218,17 +218,18 @@ export class GalleryCacheService {
} }
try { try {
// try to fit it
localStorage.setItem(key, JSON.stringify(directory)); localStorage.setItem(key, JSON.stringify(directory));
directory.directories.forEach((dir: DirectoryDTO) => {
const sub_key = GalleryCacheService.CONTENT_PREFIX + Utils.concatUrls(dir.path, dir.name);
if (localStorage.getItem(sub_key) == null) { // don't override existing
localStorage.setItem(sub_key, JSON.stringify(dir));
}
});
} catch (e) { } catch (e) {
this.reset(); this.reset();
console.error(e); console.error(e);
} }
directory.directories.forEach((dir: DirectoryDTO) => {
const sub_key = GalleryCacheService.CONTENT_PREFIX + Utils.concatUrls(dir.path, dir.name);
if (localStorage.getItem(sub_key) == null) { // don't override existing
localStorage.setItem(sub_key, JSON.stringify(dir));
}
});
} }
@ -242,21 +243,26 @@ export class GalleryCacheService {
return; return;
} }
const directoryName = Utils.concatUrls(media.directory.path, media.directory.name); try {
const value = localStorage.getItem(directoryName); const directoryName = Utils.concatUrls(media.directory.path, media.directory.name);
if (value != null) { const value = localStorage.getItem(directoryName);
const directory: DirectoryDTO = JSON.parse(value); if (value != null) {
directory.media.forEach((p) => { const directory: DirectoryDTO = JSON.parse(value);
if (p.name === media.name) { directory.media.forEach((p) => {
// update data if (p.name === media.name) {
p.metadata = media.metadata; // update data
p.readyThumbnails = media.readyThumbnails; p.metadata = media.metadata;
p.readyThumbnails = media.readyThumbnails;
// save changes // save changes
localStorage.setItem(directoryName, JSON.stringify(directory)); localStorage.setItem(directoryName, JSON.stringify(directory));
return; return;
} }
}); });
}
} catch (e) {
this.reset();
console.error(e);
} }
} }