From b3953cbdca8e5b027718b5f5c4a94d2d22e4134b Mon Sep 17 00:00:00 2001 From: Abner Oliveira Date: Thu, 14 Jul 2016 11:26:39 -0300 Subject: [PATCH] improving adding a base interface EventsHubKnownEventNames --- src/app/events-hub-known-events.constants.ts | 5 ----- src/app/events-hub-known-events.ts | 14 ++++++++++++++ src/app/index.ts | 6 +++--- src/app/main/main.component.ts | 14 ++++++++++++-- src/app/shared/services/events-hub.service.spec.ts | 22 ++++++++-------------- src/app/shared/services/events-hub.service.ts | 12 +++++++++--- 6 files changed, 46 insertions(+), 27 deletions(-) delete mode 100644 src/app/events-hub-known-events.constants.ts create mode 100644 src/app/events-hub-known-events.ts diff --git a/src/app/events-hub-known-events.constants.ts b/src/app/events-hub-known-events.constants.ts deleted file mode 100644 index dc694e0..0000000 --- a/src/app/events-hub-known-events.constants.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const EVENTS_HUB_KNOWN_EVENTS_NAMES = { - IMAGE_PROFILE_UPDATED: 'IMAGE_PROFILE_UPDATED', - PROFILE_INFO_UPDATED: 'IMAGE_PROFILE_UPDATED', - ARTICLE_UPDATED: 'ARTICLE_UPDATED' -}; diff --git a/src/app/events-hub-known-events.ts b/src/app/events-hub-known-events.ts new file mode 100644 index 0000000..0011d2c --- /dev/null +++ b/src/app/events-hub-known-events.ts @@ -0,0 +1,14 @@ +import { EventsHubKnownEventNames } from './shared/services/events-hub.service'; + +export class NoosferoEventsHubKnownEventNames implements EventsHubKnownEventNames { + IMAGE_PROFILE_UPDATED: string = 'IMAGE_PROFILE_UPDATED'; + PROFILE_INFO_UPDATED: string = 'IMAGE_PROFILE_UPDATED'; + ARTICLE_UPDATED: string = 'ARTICLE_UPDATED'; + + constructor() { + } + + getNames() { + return Object.getOwnPropertyNames(this); + } +} \ No newline at end of file diff --git a/src/app/index.ts b/src/app/index.ts index 27f7211..e00ec5b 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -24,11 +24,11 @@ angular.module('noosfero.init', ['noosfero.templates.app', 'noosfero.templates.p constant("AuthEvents", AuthEvents); -import { EVENTS_HUB_KNOWN_LIST } from './shared/services/events-hub.service'; -import { EVENTS_HUB_KNOWN_EVENTS_NAMES } from './events-hub-known-events.constants'; +import { EVENTS_HUB_KNOW_EVENT_NAMES } from './shared/services/events-hub.service'; +import { NoosferoEventsHubKnownEventNames } from './events-hub-known-events'; bootstrap(MainComponent, [ - provide(EVENTS_HUB_KNOWN_LIST, { useConstant: Object.getOwnPropertyNames(EVENTS_HUB_KNOWN_EVENTS_NAMES) }) + provide(EVENTS_HUB_KNOW_EVENT_NAMES, { useClass: NoosferoEventsHubKnownEventNames }) ] ); diff --git a/src/app/main/main.component.ts b/src/app/main/main.component.ts index c5095b2..ceec544 100644 --- a/src/app/main/main.component.ts +++ b/src/app/main/main.component.ts @@ -47,6 +47,8 @@ import {PermissionDirective} from "../shared/components/permission/permission.di import {SearchComponent} from "../search/search.component"; import {SearchFormComponent} from "../search/search-form/search-form.component"; +import { EVENTS_HUB_KNOW_EVENT_NAMES, EventsHubService } from "../shared/services/events-hub.service"; +import { NoosferoEventsHubKnownEventNames } from "../events-hub-known-events"; /** * @ngdoc controller * @name main.MainContentComponent @@ -62,12 +64,20 @@ import {SearchFormComponent} from "../search/search-form/search-form.component"; templateUrl: "app/main/main.html", providers: [AuthService, SessionService] }) -@Inject(BodyStateClassesService) +@Inject(BodyStateClassesService, EVENTS_HUB_KNOW_EVENT_NAMES) export class MainContentComponent { public themeSkin: string = 'skin-whbl'; - constructor(private bodyStateClassesService: BodyStateClassesService) { + constructor( + private bodyStateClassesService: BodyStateClassesService, + eventsNames: NoosferoEventsHubKnownEventNames, + eventsHubService: EventsHubService + ) { + try { + console.log('Events Names', eventsNames); + eventsHubService.subscribeToEvent(eventsNames.IMAGE_PROFILE_UPDATED, () => console.log('Event ImageProfileUpdate emitted!')); + } catch (e) { } bodyStateClassesService.start({ skin: this.themeSkin }); diff --git a/src/app/shared/services/events-hub.service.spec.ts b/src/app/shared/services/events-hub.service.spec.ts index f33564b..174b590 100644 --- a/src/app/shared/services/events-hub.service.spec.ts +++ b/src/app/shared/services/events-hub.service.spec.ts @@ -1,34 +1,30 @@ import { OpaqueToken } from 'ng-forward'; -import { EventsHubService } from './events-hub.service'; +import { EventsHubService, EventsHubKnownEventNames } from './events-hub.service'; describe("EventsHubService", () => { let eventsHubService: EventsHubService; - + let event1 = 'Event 1'; + let eventsHubKnownEventNames = { getNames: () => { return [ event1]; }}; it("emits events for the known events", (done) => { - let event = "Event1"; let eventListener = () => { }; // creates the events hub service which known the event "Event1" - eventsHubService = new EventsHubService([ - event - ]); + eventsHubService = new EventsHubService(eventsHubKnownEventNames); // subscribe to the event passing the done Function as the eventListener // if the event emits works the done function is called and the // test will pass - eventsHubService.subscribeToEvent(event, done); + eventsHubService.subscribeToEvent(event1, done); // emits the event - eventsHubService.emitEvent(event, null); + eventsHubService.emitEvent(event1, null); }); it("throws error when trying to emit an unknow event", () => { let eventListener = () => { }; // creates the events hub service which known the event "Event1" - eventsHubService = new EventsHubService([ - 'Event1' - ]); + eventsHubService = new EventsHubService(eventsHubKnownEventNames); // emits the event expect( @@ -40,9 +36,7 @@ describe("EventsHubService", () => { let eventListener = () => { }; // creates the events hub service which known the event "Event1" - eventsHubService = new EventsHubService([ - 'Event1' - ]); + eventsHubService = new EventsHubService(eventsHubKnownEventNames); // emits the event expect( diff --git a/src/app/shared/services/events-hub.service.ts b/src/app/shared/services/events-hub.service.ts index 179020a..c9e9779 100644 --- a/src/app/shared/services/events-hub.service.ts +++ b/src/app/shared/services/events-hub.service.ts @@ -1,14 +1,20 @@ import { Injectable, Inject, OpaqueToken, EventEmitter } from 'ng-forward'; -export const EVENTS_HUB_KNOWN_LIST = new OpaqueToken('EVENTS_HUB_KNOWN_LIST'); +export const EVENTS_HUB_KNOW_EVENT_NAMES = new OpaqueToken('EVENTS_HUB_KNOW_EVENT_NAMES'); + +export interface EventsHubKnownEventNames { + getNames(): string[]; +} @Injectable() -@Inject(EVENTS_HUB_KNOWN_LIST) +@Inject(EVENTS_HUB_KNOW_EVENT_NAMES) export class EventsHubService { private emitters: Map>; + private knownEvents: string[] = []; - constructor(private knownEvents: string[]) { + constructor(private eventsHubKnownEventNames: EventsHubKnownEventNames) { + this.knownEvents = eventsHubKnownEventNames.getNames(); this.emitters = new Map>(); this.setupEmitters(); } -- libgit2 0.21.2