UNPKG

ngx-link-preview

Version:

The Open Graph link preview component for Angular 6+

65 lines 6.02 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class NgxLinkPreviewCacheService { constructor() { /** Holds the current cache state (RAM cache) */ this.cache = {}; /** localStorage cache key */ this.localStorageKey = 'NgxLinkPreviewCache_q16qy4aOCzm2'; this.loadCacheFromLocalStorage(); } /** * Try to load the cache from localstorage */ loadCacheFromLocalStorage() { try { this.cache = JSON.parse(localStorage.getItem(this.localStorageKey)); } catch (e) { this.cache = {}; } } /** * Update item in RAM cache */ updateCacheItem(cacheKey, data) { if (!this.cache) { this.cache = {}; } this.cache[cacheKey] = data; this.saveCache(); } /** * Get item from cache */ getCacheItem(cacheKey) { let cacheData; try { cacheData = this.cache[cacheKey]; } catch (e) { cacheData = undefined; } if (!cacheData) { cacheData = undefined; } return cacheData; } /** * Save whole cache to localStorage */ saveCache() { try { localStorage.setItem(this.localStorageKey, JSON.stringify(this.cache)); } catch (e) { console.warn('Failed to save OgLinkPreviewCache in localStorage!', e); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: NgxLinkPreviewCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: NgxLinkPreviewCacheService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: NgxLinkPreviewCacheService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxpbmstcHJldmlldy1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpbmstcHJldmlldy9zcmMvbGliL3NlcnZpY2VzL25neC1saW5rLXByZXZpZXctY2FjaGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sMEJBQTBCO0lBT3BDO1FBTkEsZ0RBQWdEO1FBQ3hDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFbkIsNkJBQTZCO1FBQ3JCLG9CQUFlLEdBQUcsa0NBQWtDLENBQUM7UUFHMUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0sseUJBQXlCO1FBQzlCLElBQUk7WUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEI7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsUUFBZ0IsRUFBRSxJQUFTO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWSxDQUFDLFFBQWdCO1FBQ2pDLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSTtZQUNELFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25DO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVCxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNiLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDeEI7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2IsSUFBSTtZQUNELFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0osQ0FBQzs4R0E1RFMsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hMaW5rUHJldmlld0NhY2hlU2VydmljZSB7XG4gICAvKiogSG9sZHMgdGhlIGN1cnJlbnQgY2FjaGUgc3RhdGUgKFJBTSBjYWNoZSkgKi9cbiAgIHByaXZhdGUgY2FjaGUgPSB7fTtcblxuICAgLyoqIGxvY2FsU3RvcmFnZSBjYWNoZSBrZXkgKi9cbiAgIHByaXZhdGUgbG9jYWxTdG9yYWdlS2V5ID0gJ05neExpbmtQcmV2aWV3Q2FjaGVfcTE2cXk0YU9Dem0yJztcblxuICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmxvYWRDYWNoZUZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBUcnkgdG8gbG9hZCB0aGUgY2FjaGUgZnJvbSBsb2NhbHN0b3JhZ2VcbiAgICAqL1xuICAgcHJpdmF0ZSBsb2FkQ2FjaGVGcm9tTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgICAgdHJ5IHtcbiAgICAgICAgIHRoaXMuY2FjaGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5KSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICB0aGlzLmNhY2hlID0ge307XG4gICAgICB9XG4gICB9XG5cbiAgIC8qKlxuICAgICogVXBkYXRlIGl0ZW0gaW4gUkFNIGNhY2hlXG4gICAgKi9cbiAgIHB1YmxpYyB1cGRhdGVDYWNoZUl0ZW0oY2FjaGVLZXk6IHN0cmluZywgZGF0YTogYW55KTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FjaGVbY2FjaGVLZXldID0gZGF0YTtcbiAgICAgIHRoaXMuc2F2ZUNhY2hlKCk7XG4gICB9XG5cbiAgIC8qKlxuICAgICogR2V0IGl0ZW0gZnJvbSBjYWNoZVxuICAgICovXG4gICBwdWJsaWMgZ2V0Q2FjaGVJdGVtKGNhY2hlS2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgbGV0IGNhY2hlRGF0YTtcbiAgICAgIHRyeSB7XG4gICAgICAgICBjYWNoZURhdGEgPSB0aGlzLmNhY2hlW2NhY2hlS2V5XTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgIGNhY2hlRGF0YSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFjYWNoZURhdGEpIHtcbiAgICAgICAgIGNhY2hlRGF0YSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlRGF0YTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBTYXZlIHdob2xlIGNhY2hlIHRvIGxvY2FsU3RvcmFnZVxuICAgICovXG4gICBwdWJsaWMgc2F2ZUNhY2hlKCk6IHZvaWQge1xuICAgICAgdHJ5IHtcbiAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLmNhY2hlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzYXZlIE9nTGlua1ByZXZpZXdDYWNoZSBpbiBsb2NhbFN0b3JhZ2UhJywgZSk7XG4gICAgICB9XG4gICB9XG59XG4iXX0=