ngx-link-preview
Version:
The Open Graph link preview component for Angular 6+
65 lines • 6.02 kB
JavaScript
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=