All files / src/json-cache json-cache.ts

100% Statements 18/18
100% Branches 2/2
100% Functions 5/5
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4218x             18x       18x     4x 4x 4x 4x 1x   4x   4x       8x 8x 8x 5x   8x       1x 1x 1x        
import { Metadata } from '../metadata/metadata';
import { IDictionary } from '../utils';
 
export interface IJSONObject {
	path: string;
}
 
export class JsonCacheService {
	/**
	 * jsons collection
	 */
	public static jsonCollection: IJSONObject[] = [];
 
	public static async saveJSONCache(jsonCollection: IJSONObject[], metadata?: IDictionary<any>) {
		const jsonCollectionInCache = jsonCollection.map(async (jsonItem) => {
			const { path } = jsonItem;
			let metadataToSaveInCache = metadata;
			if (!metadata) {
				metadataToSaveInCache = await Metadata.get(path, true);
			}
			localStorage.setItem(path, JSON.stringify(metadataToSaveInCache));
		});
		await Promise.all(jsonCollectionInCache);
	}
 
	public static getJSONCache(path: string) {
		const getMetadaFromCache = localStorage.getItem(path);
		let metadataValueReturn: IDictionary<any> | boolean = false;
		if (typeof getMetadaFromCache === 'string') {
			metadataValueReturn = JSON.parse(getMetadaFromCache);
		}
		return metadataValueReturn;
	}
 
	public static clearJSONCache(jsonCollection: IJSONObject[]): void {
		jsonCollection.map(async (jsonItem) => {
			const { path } = jsonItem;
			localStorage.removeItem(path);
		});
	}
}