import { Injectable } from '@angular/core'; import { Storage } from '@ionic/storage'; import { AnimationController, ModalController,Platform } from '@ionic/angular'; import { SHA1 } from 'crypto-js' import { localstoreService } from '../store/localstore.service'; /* import { Plugins } from '@capacitor/core'; const { Storage } = Plugins; */ @Injectable({ providedIn: 'root' }) export class StorageService { private keyName: string; constructor(private storage:Storage, private platform: Platform ) {} key(key) { this.keyName = (SHA1('service'+this.constructor.name+key)).toString() } // Store the value async store(key: string, value: any) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { await localstoreService.set(this.key(key), value) } else { const encryptedValue = btoa(escape(JSON.stringify(value))); await this.storage.set(key, encryptedValue); } } // Get the value async get(key: string) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { return new Promise((resolve, reject)=>{ const data = localstoreService.get(this.key(key), false) if(data) resolve(data) else reject(data) }) } else { const ret = await this.storage.get(key).then((val) => { return val; }); try { return JSON.parse(unescape(atob(ret))); } catch (error) { return unescape(atob(ret)) } } } async remove(key: string){ if (this.platform.is('desktop') || this.platform.is('mobileweb')) { await localstoreService.delete(this.key(key)) } else { await this.storage.remove(key); } } /* // Get the value async get(storageKey: string) { const ret = await Storage.get({ key: storageKey }); return JSON.parse(unescape(atob(ret.value))); } async removeStorageItem(storageKey: string) { await Storage.remove({ key: storageKey }); } // Clear storage async clear() { await Storage.clear(); } */ }