diff --git a/ts/lik.objectmap.ts b/ts/lik.objectmap.ts index c9ffd5a..1eda947 100644 --- a/ts/lik.objectmap.ts +++ b/ts/lik.objectmap.ts @@ -17,6 +17,11 @@ export interface IObjectmapFindFunction { (itemArg: T): boolean; } +export interface IObjectMapEventData { + operation: 'add' | 'remove'; + payload: T; +} + /** * allows keeping track of objects */ @@ -24,7 +29,7 @@ export class ObjectMap { private fastMap = new FastMap(); // events - public eventSubject = new plugins.smartrx.rxjs.Subject(); + public eventSubject = new plugins.smartrx.rxjs.Subject>(); /** * returns a new instance @@ -57,8 +62,6 @@ export class ObjectMap { const object = this.getMappedUnique(uniqueKey); } - public addSubject = new plugins.smartrx.rxjs.Subject(); - /** * add object to Objectmap * returns false if the object is already in the map @@ -76,7 +79,10 @@ export class ObjectMap { // otherwise lets create it const uniqueKey = uni('key'); this.addMappedUnique(uniqueKey, objectArg); - this.addSubject.next(objectArg); + this.eventSubject.next({ + operation: 'add', + payload: objectArg + }); return uniqueKey; } @@ -153,7 +159,10 @@ export class ObjectMap { } else { const keyToUse = keys[0]; const removedItem = this.fastMap.removeFromMap(keyToUse); - this.eventSubject.next('remove'); + this.eventSubject.next({ + operation: 'remove', + payload: removedItem + }); return removedItem; } } @@ -183,7 +192,10 @@ export class ObjectMap { if (this.checkForObject(objectArg)) { const keyArg = this.getKeyForObject(objectArg); const removedObject = this.fastMap.removeFromMap(keyArg); - this.eventSubject.next('remove'); + this.eventSubject.next({ + operation: 'remove', + payload: removedObject + }); return removedObject; } return null;