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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 1x 1x 1x 1x 1x 1x 17x 4x 3x 2x 8x 1x | import { InjectionToken } from '@angular/core'; import { IStorageProvider } from '../domain/interfaces/storage.interface'; import { LocalStorageService } from './local-storage.service'; import { IndexedDbStorageService } from './indexed-db-storage.service'; import { IPFSStorageService } from './ipfs/ipfs-storage.service'; import { HeliaStorageService } from './helia/helia-storage.service'; export const STORAGE_PROVIDER = new InjectionToken<IStorageProvider>('storage.provider'); export enum StorageType { IN_MEMORY = 'in-memory', INDEXED_DB = 'indexed-db', IPFS = 'ipfs', HELIA = 'helia' } export function storageProviderFactory( localStorageService: LocalStorageService, indexedDbService: IndexedDbStorageService, ipfsStorageService: IPFSStorageService, heliaStorageService: HeliaStorageService, storageType: StorageType = StorageType.IN_MEMORY ): IStorageProvider { switch (storageType) { case StorageType.INDEXED_DB: return indexedDbService; case StorageType.IPFS: return ipfsStorageService; case StorageType.HELIA: return heliaStorageService; case StorageType.IN_MEMORY: default: return localStorageService; } } export const STORAGE_TYPE = new InjectionToken<StorageType>('storage.type'); export function getStorageType(): StorageType { // Check user preference from localStorage Iif (typeof window !== 'undefined') { const savedPreference = localStorage.getItem('cas-storage-type'); // Return saved preference if it's a valid storage type Iif (savedPreference === StorageType.INDEXED_DB || savedPreference === StorageType.IPFS || savedPreference === StorageType.HELIA || savedPreference === StorageType.IN_MEMORY) { return savedPreference as StorageType; } // Check if IndexedDB is available for default Iif ('indexedDB' in window) { return StorageType.INDEXED_DB; } } // Default to in-memory storage return StorageType.IN_MEMORY; } |