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;
} |