@@ -11,15 +11,65 @@ import {
11
11
} from "./error" ;
12
12
import { Data } from "./types" ;
13
13
14
- export interface EventPayload {
14
+ interface BaseActionData {
15
+ selection : Array < {
16
+ entityId : string ;
17
+ entityType : string ;
18
+ } > ;
19
+ }
20
+
21
+ interface BaseEventPayload {
15
22
target : string ;
16
- inReplyToEvent : string ;
17
- topic : string ;
18
23
source : EventSource ;
19
- data : EventData ;
20
24
id : string ;
25
+ inReplyToEvent ?: string ;
26
+ sent ?: boolean ;
27
+ }
28
+
29
+ export interface ActionDiscoverEventPayload extends BaseEventPayload {
30
+ topic : "ftrack.action.discover" ;
31
+ data : BaseActionData ;
32
+ }
33
+
34
+ export interface ActionLaunchEventData extends BaseActionData {
35
+ actionIdentifier : string ;
36
+ description ?: string ;
37
+ label ?: string ;
38
+ applicationIdentifier ?: string ;
39
+ }
40
+
41
+ export interface ActionLaunchEventPayload extends BaseEventPayload {
42
+ topic : "ftrack.action.launch" ;
43
+ data : ActionLaunchEventData ;
21
44
}
22
45
46
+ export interface UpdateEventData {
47
+ entities ?: EventEntity [ ] ;
48
+ pushToken ?: string ;
49
+ parents ?: string [ ] ;
50
+ user ?: {
51
+ userid : string ;
52
+ name : string ;
53
+ } ;
54
+ clientToken ?: string ;
55
+ }
56
+
57
+ export interface UpdateEventPayload extends BaseEventPayload {
58
+ topic : "ftrack.update" ;
59
+ data : UpdateEventData ;
60
+ }
61
+
62
+ export interface UnknownEventPayload extends BaseEventPayload {
63
+ topic : unknown ;
64
+ data : unknown ;
65
+ }
66
+
67
+ export type EventPayload =
68
+ | ActionLaunchEventPayload
69
+ | ActionDiscoverEventPayload
70
+ | UpdateEventPayload
71
+ | UnknownEventPayload ;
72
+
23
73
export interface EventSource {
24
74
clientToken : string ;
25
75
applicationId : string ;
@@ -30,32 +80,21 @@ export interface EventSource {
30
80
id : string ;
31
81
}
32
82
33
- export interface EventData {
34
- entities : EventEntity [ ] ;
35
- pushToken : string ;
36
- parents : string [ ] ;
37
- user : {
38
- userid : string ;
39
- name : string ;
40
- } ;
41
- clientToken : string ;
42
- }
43
-
44
83
export interface EventEntity {
45
- entity_type : string ;
46
- keys : string [ ] ;
47
- objectTypeId : string ;
48
- entityType : string ;
49
- parents : {
84
+ entity_type ? : string ;
85
+ keys ? : string [ ] ;
86
+ objectTypeId ? : string ;
87
+ entityType ? : string ;
88
+ parents ? : {
50
89
entityId : string ;
51
90
entityType : string ;
52
91
entity_type : string ;
53
92
parentId ?: string ;
54
93
} [ ] ;
55
- parentId : string ;
56
- action : string ;
57
- entityId : string ;
58
- changes : Data ;
94
+ parentId ? : string ;
95
+ action ? : string ;
96
+ entityId ? : string ;
97
+ changes ? : Data ;
59
98
}
60
99
61
100
export interface SubscriberMetadata {
@@ -541,7 +580,9 @@ export class EventHub {
541
580
*/
542
581
_handleReply ( eventPayload : EventPayload ) {
543
582
this . logger . debug ( "Reply received" , eventPayload ) ;
544
- const onReplyCallback = this . _replyCallbacks [ eventPayload . inReplyToEvent ] ;
583
+ const onReplyCallback = ! eventPayload . inReplyToEvent
584
+ ? null
585
+ : this . _replyCallbacks [ eventPayload . inReplyToEvent ] ;
545
586
if ( onReplyCallback ) {
546
587
onReplyCallback ( eventPayload ) ;
547
588
}
0 commit comments