import { UUIDType } from "./types"; import IndexedDBHandler from "./indexed-db-handler"; import StorageHandler from "./storage-handler"; export default class UUIDManager { storageHandler: StorageHandler; indexedDBHandler: IndexedDBHandler | null; constructor() { this.indexedDBHandler = null; this.storageHandler = StorageHandler.getInstance(); if ("indexedDB" in window) { this.indexedDBHandler = IndexedDBHandler.getInstance(); } } /** * indexedDBHandler가 있으면 indexedDBHandler에 없으면 storageHandler에 set 함수 호출. * * @public * @param uuidType * @param uuidValue */ async set(uuidType: UUIDType, uuidValue: string): Promise { if (this.indexedDBHandler) { await this.indexedDBHandler.set(uuidType, uuidValue); } else { this.storageHandler.set(uuidType, uuidValue); } } /** * indexedDBHandler가 있으면 indexedDBHandler에 없으면 storageHandler에 get 함수 호출. * * @public * @param uuidType */ async get(uuidType: UUIDType): Promise { if (this.indexedDBHandler) { return await this.indexedDBHandler.get(uuidType); } else { return this.storageHandler.get(uuidType); } } /** * indexedDBHandler가 있으면 indexedDBHandler에 없으면 storageHandler에 delete 함수 호출. * * @public * @param uuidType */ async delete(uuidType: UUIDType): Promise { if (this.indexedDBHandler) { await this.indexedDBHandler.delete(uuidType); } else { this.storageHandler.delete(uuidType); } } /** * storageHandler clear함수 호출 후 indexedDBHandler가 있으면 indexedDBHandler clear함수 호출. * * @public */ async clear(): Promise { this.storageHandler.clear(); if (this.indexedDBHandler) { await this.indexedDBHandler.clear(); } } }