Skip to content

Commit 2b8e04e

Browse files
authored
Merge pull request #80 from delphi-hub/feature/parameterizedSocketService
Feature/parameterized socket service
2 parents 348e972 + e586a48 commit 2b8e04e

File tree

4 files changed

+21
-30
lines changed

4 files changed

+21
-30
lines changed

client/package-lock.json

Lines changed: 12 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"bootstrap": "^4.1.3",
2727
"core-js": "^2.5.7",
2828
"font-awesome": "^4.7.0",
29+
"hammerjs": "^2.0.8",
2930
"jquery": "^3.3.1",
3031
"material-design-icons": "^3.0.1",
3132
"popper.js": "^1.14.5",

client/src/app/api/api/socket.service.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ import {InstanceLink} from '../model/instanceLink';
3232

3333

3434
interface ObserverMap {
35-
[key: string]: Subject<any>;
35+
[key: string]: Subject<ReturnType>;
3636
}
37-
37+
type ReturnType = Instance | InstanceLink | number | DockerOperationError;
3838
@Injectable({
3939
providedIn: 'root'
4040
})
@@ -89,9 +89,8 @@ export class SocketService {
8989
*
9090
* @param eventName
9191
*/
92-
public subscribeForEvent(eventName: EventType): Observable<number | InstanceLink | Instance | DockerOperationError> {
93-
94-
return new Observable((observer: Observer<any>) => {
92+
public subscribeForEvent<T extends ReturnType>(eventName: EventType): Observable<T> {
93+
return new Observable<T>((observer: Observer<T>) => {
9594

9695
/**
9796
* First step to subscribe for an event is to append the new observer to the set
@@ -111,7 +110,7 @@ export class SocketService {
111110
}
112111

113112
if (!registeredEvents.includes(eventName)) {
114-
this.observers[eventName] = new Subject<any>();
113+
this.observers[eventName] = new Subject<T>();
115114
console.log('registering for event', eventName);
116115

117116
this.send({event: publishEventName});
@@ -144,7 +143,7 @@ export class SocketService {
144143

145144
const {event, toSend} = this.getEventAndPayload(msg);
146145

147-
const relevantSubject: Subject<any> = this.observers[event];
146+
const relevantSubject = this.observers[event];
148147
if (relevantSubject) {
149148
relevantSubject.next(toSend);
150149
}
@@ -165,7 +164,7 @@ export class SocketService {
165164
* @param msg
166165
*/
167166
private getEventAndPayload(msg: RegistryEvent) {
168-
let toSend: any;
167+
let toSend: ReturnType;
169168
let event: EventType;
170169

171170
if (msg.eventType === EventTypeEnum.NumbersChangedEvent) {

client/src/app/dashboard/dashboard-card/dashboard-card.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export class DashboardCardComponent implements OnInit {
7070

7171
const eventType: EventType = DashboardCardComponent.compTypeEventMap[this.componentType];
7272

73-
this.socketService.subscribeForEvent(eventType).subscribe((data: number) => {
73+
this.socketService.subscribeForEvent<number>(eventType).subscribe((data: number) => {
7474
console.log('data callback in card component', data);
7575

7676
this.numberOfInstances = '' + data;

0 commit comments

Comments
 (0)