import { InstanceMap } from '../../utils/interfaces' export const useInstanceMap = (): InstanceMap => { /** * Generic map stores multiple instance * For eg; * callId => CallInstance * controlId => PlaybackInstance | RecordingInstance */ const instanceMap = new Map() const getInstance = (key: string): T => { return instanceMap.get(key) as T } const setInstance = (key: string, value: T) => { instanceMap.set(key, value) return instanceMap as Map } const deleteInstance = (key: string) => { instanceMap.delete(key) return instanceMap as Map } const getAllInstances = () => { return Array.from(instanceMap.entries()) } const deleteAllInstances = () => { instanceMap.clear() return instanceMap } return { get: getInstance, set: setInstance, remove: deleteInstance, getAll: getAllInstances, deleteAll: deleteAllInstances, } }