Skip to content

Commit c0f223c

Browse files
authored
Merge 1dac0d5 into 33f1c2f
2 parents 33f1c2f + 1dac0d5 commit c0f223c

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

src/edge-agent/Agent.MessageEvents.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { EventCallback, ListenerKey } from "./types";
1111
* @typedef {EventsManager}
1212
*/
1313
export class EventsManager {
14-
private events: Map<ListenerKey, Set<EventCallback>> = new Map();
14+
private events: Map<ListenerKey, Set<EventCallback<any>>> = new Map();
1515

1616
/**
1717
* Just adds a new event listener by passing the event name and the callback function we want
@@ -22,7 +22,7 @@ export class EventsManager {
2222
* @param {EventCallback} callback
2323
* @returns {number}
2424
*/
25-
public addListener(eventName: ListenerKey, callback: EventCallback): number {
25+
public addListener<T extends ListenerKey>(eventName: T, callback: EventCallback<T>): number {
2626
if (!this.events.has(eventName)) {
2727
this.events.set(eventName, new Set());
2828
}
@@ -40,7 +40,7 @@ export class EventsManager {
4040
* @param {ListenerKey} eventName
4141
* @param {EventCallback} callback
4242
*/
43-
public removeListener(eventName: ListenerKey, callback: EventCallback): void {
43+
public removeListener<T extends ListenerKey>(eventName: T, callback: EventCallback<T>): void {
4444
const callbacks = this.events.get(eventName);
4545

4646
if (notNil(callbacks)) {

src/edge-agent/Agent.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export default class Agent extends Startable.Controller {
162162
* @param {ListenerKey} eventName
163163
* @param {EventCallback} callback
164164
*/
165-
addListener(eventName: ListenerKey, callback: EventCallback) {
165+
addListener<T extends ListenerKey>(eventName: T, callback: EventCallback<T>) {
166166
return this.events.addListener(eventName, callback);
167167
}
168168

@@ -173,7 +173,7 @@ export default class Agent extends Startable.Controller {
173173
* @param {ListenerKey} eventName
174174
* @param {EventCallback} callback
175175
*/
176-
removeListener(eventName: ListenerKey, callback: EventCallback): void {
176+
removeListener<T extends ListenerKey>(eventName: T, callback: EventCallback<T>): void {
177177
return this.events.removeListener(eventName, callback);
178178
}
179179

src/edge-agent/types/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,17 @@ export type InvitationType = PrismOnboardingInvitation | OutOfBandInvitation;
5454
export type MessageEventArg = Message[];
5555
export type ConnectionEventArg = DIDPair;
5656
export type RevokeEventArg = Credential;
57-
export type EventCallback = (arg: MessageEventArg | ConnectionEventArg | RevokeEventArg) => void;
5857

5958
export enum ListenerKey {
6059
MESSAGE = "message",
6160
CONNECTION = "connection",
6261
REVOKE = "revoke"
6362
}
63+
64+
65+
export type EventCallbacks = {
66+
[ListenerKey.MESSAGE]: (messages: MessageEventArg) => void;
67+
[ListenerKey.CONNECTION]: (connection: ConnectionEventArg) => void;
68+
[ListenerKey.REVOKE]: (revoke: RevokeEventArg) => void;
69+
}
70+
export type EventCallback<T extends ListenerKey> = EventCallbacks[T];

0 commit comments

Comments
 (0)