| 
									
										
										
										
											2021-01-15 00:29:07 +01:00
										 |  |  | /*** | 
					
						
							|  |  |  |  * 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 FeatureSource from "./FeatureSource"; | 
					
						
							|  |  |  | import {UIEventSource} from "../UIEventSource"; | 
					
						
							| 
									
										
										
										
											2021-01-15 01:57:46 +01:00
										 |  |  | import LayoutConfig from "../../Customizations/JSON/LayoutConfig"; | 
					
						
							| 
									
										
										
										
											2021-01-15 00:29:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class LocalStorageSaver implements FeatureSource { | 
					
						
							|  |  |  |     public static readonly storageKey: string = "cached-features"; | 
					
						
							|  |  |  |     public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-15 01:57:46 +01:00
										 |  |  |     constructor(source: FeatureSource, layout: UIEventSource<LayoutConfig>) { | 
					
						
							| 
									
										
										
										
											2021-01-15 00:29:07 +01:00
										 |  |  |         this.features = source.features; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.features.addCallbackAndRun(features => { | 
					
						
							|  |  |  |             if (features === undefined) { | 
					
						
							|  |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if(features.length == 0){ | 
					
						
							|  |  |  |                 return; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             try { | 
					
						
							| 
									
										
										
										
											2021-01-15 01:57:46 +01:00
										 |  |  |                 const key = LocalStorageSaver.storageKey+layout.data.id | 
					
						
							|  |  |  |                 localStorage.setItem(key, JSON.stringify(features)); | 
					
						
							|  |  |  |                 console.log("Saved ",features.length, "elements to",key) | 
					
						
							| 
									
										
										
										
											2021-01-15 00:29:07 +01:00
										 |  |  |             } catch (e) { | 
					
						
							|  |  |  |                 console.warn("Could not save the features to local storage:", e) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |