MapComplete/Logic/FeatureSource/Actors/SaveTileToLocalStorageActor.ts
2021-09-29 19:56:59 +02:00

34 lines
No EOL
1.2 KiB
TypeScript

/***
* Saves all the features that are passed in to localstorage, so they can be retrieved on the next run
*
* Technically, more an Actor then a featuresource, but it fits more neatly this ay
*/
import {FeatureSourceForLayer} from "../FeatureSource";
export default class SaveTileToLocalStorageActor {
public static readonly storageKey: string = "cached-features";
public static readonly formatVersion : string = "1"
constructor(source: FeatureSourceForLayer, tileIndex: number) {
source.features.addCallbackAndRunD(features => {
const key = `${SaveTileToLocalStorageActor.storageKey}-${source.layer.layerDef.id}-${tileIndex}`
const now = new Date().getTime()
if (features.length == 0) {
return;
}
try {
localStorage.setItem(key, JSON.stringify(features));
localStorage.setItem(key + "-time", JSON.stringify(now))
localStorage.setItem(key+"-format", SaveTileToLocalStorageActor.formatVersion)
} catch (e) {
console.warn("Could not save the features to local storage:", e)
}
})
}
}