src/lib/service/storage/local-storage.service.ts
Wrapper for accessing browsers local storage.
Methods |
constructor()
|
clear | ||||||
clear(filter?: (key?: string) => void)
|
||||||
Clears the Local Storage
Parameters :
Returns :
any
|
getItem | ||||||||
getItem(key: string)
|
||||||||
Retrieves a value by key from local storage and parses it
Parameters :
Returns :
any
The stored value |
getStorage |
getStorage()
|
Returns :
any
|
hasItem | ||||||||
hasItem(key: string)
|
||||||||
Checks if Key is available in Local Storage
Parameters :
Returns :
boolean
True if a value exists for the given key, false otherwise |
isEmpty |
isEmpty()
|
Returns :
boolean
|
isKeyDefined | ||||||||
isKeyDefined(key: string)
|
||||||||
Checks if a Key is defined in local storage
Parameters :
Returns :
boolean | void
True if key eyists, false otherwise |
removeItem | ||||||||
removeItem(key: string)
|
||||||||
Removes a key value from Local Storage by provided Key
Parameters :
Returns :
void
|
setItem | ||||||||||||
setItem(key: string, value: any)
|
||||||||||||
Sets the provided value to the local storage
Parameters :
Returns :
boolean | void
|
setStorage | ||||||
setStorage(settings: any)
|
||||||
Parameters :
Returns :
void
|
import {Injectable} from '@angular/core';
/**
* @ignore
*/
let instance;
/**
* Wrapper for accessing browsers local storage.
*/
@Injectable({
providedIn: 'root'
})
export class LocalStorageService {
private storage: any;
constructor() {
if (instance) {
instance = this;
}
this.storage = this.isLocalStorageAvailable() ? window.localStorage : null;
return instance;
}
/**
* Sets the provided value to the local storage
*
* @param key The items key
* @param value The items value
*/
setItem(key: string, value: any): boolean | void {
if (typeof key === 'undefined' || typeof value === 'undefined') {
return false;
}
this.storage.setItem(key, JSON.stringify(value));
}
/**
* Retrieves a value by key from local storage and parses it
*
* @param key The key of the item to be retrieved
* @return The stored value
*/
getItem(key: string): any {
this.isKeyDefined(key);
const value = this.storage.getItem(key);
if (value) {
return JSON.parse(value);
}
return false;
}
/**
* Checks if Key is available in Local Storage
* @param key The items key
* @return True if a value exists for the given key, false otherwise
*/
hasItem(key: string): boolean {
this.isKeyDefined(key);
return this.storage.getItem(key) === null;
}
/**
* Removes a key value from Local Storage by provided Key
* @param key The items key
*/
removeItem(key: string) {
this.isKeyDefined(key);
this.storage.removeItem(key);
}
/**
* Clears the Local Storage
*/
clear(filter?: (key: string) => boolean) {
return filter ? Object.keys(this.storage).forEach(key => filter(key) && this.removeItem(key)) : this.storage.clear();
}
/**
* Checks if a Key is defined in local storage
* @param key The items key
* @return True if key eyists, false otherwise
*/
isKeyDefined(key: string): boolean | void {
if (typeof key === 'undefined') {
return false;
}
}
getStorage() {
return this.storage;
}
setStorage(settings: any) {
for (const [key, value] of Object.entries(settings)) {
this.storage.setItem(key, value);
}
}
isEmpty(): boolean {
return this.storage && this.storage.length === 0;
}
/**
* Checks if the Browser Supports Local Storage
*/
private isLocalStorageAvailable() {
try {
const storage = window.localStorage;
storage.setItem('test', 'test');
storage.removeItem('test');
return true;
} catch (e) {
return false;
}
}
}