15
15
*/
16
16
17
17
import { EventEmitter } from "events" ;
18
+
18
19
import { ITransport } from "./transport/ITransport" ;
19
20
import { Widget } from "./models/Widget" ;
20
21
import { PostmessageTransport } from "./transport/PostmessageTransport" ;
@@ -213,12 +214,12 @@ export class ClientWidgetApi extends EventEmitter {
213
214
return this . allowedEvents . some ( e => e . matchesAsRoomAccountData ( EventDirection . Receive , eventType ) ) ;
214
215
}
215
216
216
- public stop ( ) {
217
+ public stop ( ) : void {
217
218
this . isStopped = true ;
218
219
this . transport . stop ( ) ;
219
220
}
220
221
221
- private beginCapabilities ( ) {
222
+ private beginCapabilities ( ) : void {
222
223
// widget has loaded - tell all the listeners that
223
224
this . emit ( "preparing" ) ;
224
225
@@ -239,18 +240,18 @@ export class ClientWidgetApi extends EventEmitter {
239
240
} ) ;
240
241
}
241
242
242
- private notifyCapabilities ( requested : Capability [ ] ) {
243
+ private notifyCapabilities ( requested : Capability [ ] ) : void {
243
244
this . transport . send ( WidgetApiToWidgetAction . NotifyCapabilities , < INotifyCapabilitiesActionRequestData > {
244
245
requested : requested ,
245
246
approved : Array . from ( this . allowedCapabilities ) ,
246
247
} ) . catch ( e => {
247
248
console . warn ( "non-fatal error notifying widget of approved capabilities:" , e ) ;
248
249
} ) . then ( ( ) => {
249
- this . emit ( "capabilitiesNotified" )
250
+ this . emit ( "capabilitiesNotified" ) ;
250
251
} ) ;
251
252
}
252
253
253
- private onIframeLoad ( ev : Event ) {
254
+ private onIframeLoad ( ev : Event ) : void {
254
255
if ( this . widget . waitForIframeLoad ) {
255
256
// If the widget is set to waitForIframeLoad the capabilities immediatly get setup after load.
256
257
// The client does not wait for the ContentLoaded action.
@@ -268,7 +269,7 @@ export class ClientWidgetApi extends EventEmitter {
268
269
}
269
270
}
270
271
271
- private handleContentLoadedAction ( action : IContentLoadedActionRequest ) {
272
+ private handleContentLoadedAction ( action : IContentLoadedActionRequest ) : void {
272
273
if ( this . contentLoadedWaitTimer !== undefined ) {
273
274
clearTimeout ( this . contentLoadedWaitTimer ) ;
274
275
this . contentLoadedWaitTimer = undefined ;
@@ -291,13 +292,13 @@ export class ClientWidgetApi extends EventEmitter {
291
292
this . contentLoadedActionSent = true ;
292
293
}
293
294
294
- private replyVersions ( request : ISupportedVersionsActionRequest ) {
295
+ private replyVersions ( request : ISupportedVersionsActionRequest ) : void {
295
296
this . transport . reply < ISupportedVersionsActionResponseData > ( request , {
296
297
supported_versions : CurrentApiVersions ,
297
298
} ) ;
298
299
}
299
300
300
- private handleCapabilitiesRenegotiate ( request : IRenegotiateCapabilitiesActionRequest ) {
301
+ private handleCapabilitiesRenegotiate ( request : IRenegotiateCapabilitiesActionRequest ) : void {
301
302
// acknowledge first
302
303
this . transport . reply < IWidgetApiAcknowledgeResponseData > ( request , { } ) ;
303
304
@@ -318,7 +319,7 @@ export class ClientWidgetApi extends EventEmitter {
318
319
} ) ;
319
320
}
320
321
321
- private handleNavigate ( request : INavigateActionRequest ) {
322
+ private handleNavigate ( request : INavigateActionRequest ) : void {
322
323
if ( ! this . hasCapability ( MatrixCapabilities . MSC2931Navigate ) ) {
323
324
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
324
325
error : { message : "Missing capability" } ,
@@ -331,7 +332,7 @@ export class ClientWidgetApi extends EventEmitter {
331
332
} ) ;
332
333
}
333
334
334
- const onErr = ( e : unknown ) => {
335
+ const onErr = ( e : unknown ) : void => {
335
336
console . error ( "[ClientWidgetApi] Failed to handle navigation: " , e ) ;
336
337
this . handleDriverError ( e , request , "Error handling navigation" ) ;
337
338
} ;
@@ -345,10 +346,10 @@ export class ClientWidgetApi extends EventEmitter {
345
346
}
346
347
}
347
348
348
- private handleOIDC ( request : IGetOpenIDActionRequest ) {
349
+ private handleOIDC ( request : IGetOpenIDActionRequest ) : void {
349
350
let phase = 1 ; // 1 = initial request, 2 = after user manual confirmation
350
351
351
- const replyState = ( state : OpenIDRequestState , credential ?: IOpenIDCredentials ) => {
352
+ const replyState = ( state : OpenIDRequestState , credential ?: IOpenIDCredentials ) : void | Promise < IWidgetApiAcknowledgeResponseData > => {
352
353
credential = credential || { } ;
353
354
if ( phase > 1 ) {
354
355
return this . transport . send < IOpenIDCredentialsActionRequestData > (
@@ -367,7 +368,7 @@ export class ClientWidgetApi extends EventEmitter {
367
368
}
368
369
} ;
369
370
370
- const replyError = ( msg : string ) => {
371
+ const replyError = ( msg : string ) : void | Promise < IWidgetApiAcknowledgeResponseData > => {
371
372
console . error ( "[ClientWidgetApi] Failed to handle OIDC: " , msg ) ;
372
373
if ( phase > 1 ) {
373
374
// We don't have a way to indicate that a random error happened in this flow, so
@@ -405,7 +406,7 @@ export class ClientWidgetApi extends EventEmitter {
405
406
406
407
this . driver . askOpenID ( observer ) ;
407
408
}
408
- private handleReadRoomAccountData ( request : IReadRoomAccountDataFromWidgetActionRequest ) {
409
+ private handleReadRoomAccountData ( request : IReadRoomAccountDataFromWidgetActionRequest ) : void | Promise < void > {
409
410
let events : Promise < IRoomAccountData [ ] > = Promise . resolve ( [ ] ) ;
410
411
events = this . driver . readRoomAccountData ( request . data . type ) ;
411
412
@@ -416,11 +417,11 @@ export class ClientWidgetApi extends EventEmitter {
416
417
}
417
418
418
419
return events . then ( ( evs ) => {
419
- this . transport . reply < IReadRoomAccountDataFromWidgetResponseData > ( request , { events : evs } )
420
+ this . transport . reply < IReadRoomAccountDataFromWidgetResponseData > ( request , { events : evs } ) ;
420
421
} ) ;
421
422
}
422
423
423
- private handleReadEvents ( request : IReadEventFromWidgetActionRequest ) {
424
+ private handleReadEvents ( request : IReadEventFromWidgetActionRequest ) : void | Promise < void > {
424
425
if ( ! request . data . type ) {
425
426
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
426
427
error : { message : "Invalid request - missing event type" } ,
@@ -434,9 +435,10 @@ export class ClientWidgetApi extends EventEmitter {
434
435
435
436
let askRoomIds : string [ ] | null = null ; // null denotes current room only
436
437
if ( request . data . room_ids ) {
437
- askRoomIds = request . data . room_ids as string [ ] ;
438
- if ( ! Array . isArray ( askRoomIds ) ) {
439
- askRoomIds = [ askRoomIds as any as string ] ;
438
+ if ( Array . isArray ( request . data . room_ids ) ) {
439
+ askRoomIds = request . data . room_ids ;
440
+ } else {
441
+ askRoomIds = [ request . data . room_ids ] ;
440
442
}
441
443
for ( const roomId of askRoomIds ) {
442
444
if ( ! this . canUseRoomTimeline ( roomId ) ) {
@@ -471,7 +473,7 @@ export class ClientWidgetApi extends EventEmitter {
471
473
return events . then ( evs => this . transport . reply < IReadEventFromWidgetResponseData > ( request , { events : evs } ) ) ;
472
474
}
473
475
474
- private handleSendEvent ( request : ISendEventFromWidgetActionRequest ) {
476
+ private handleSendEvent ( request : ISendEventFromWidgetActionRequest ) : void {
475
477
if ( ! request . data . type ) {
476
478
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
477
479
error : { message : "Invalid request - missing event type" } ,
@@ -559,7 +561,7 @@ export class ClientWidgetApi extends EventEmitter {
559
561
} ) ;
560
562
}
561
563
562
- private handleUpdateDelayedEvent ( request : IUpdateDelayedEventFromWidgetActionRequest ) {
564
+ private handleUpdateDelayedEvent ( request : IUpdateDelayedEventFromWidgetActionRequest ) : void {
563
565
if ( ! request . data . delay_id ) {
564
566
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
565
567
error : { message : "Invalid request - missing delay_id" } ,
@@ -618,7 +620,7 @@ export class ClientWidgetApi extends EventEmitter {
618
620
}
619
621
}
620
622
621
- private async pollTurnServers ( turnServers : AsyncGenerator < ITurnServer > , initialServer : ITurnServer ) {
623
+ private async pollTurnServers ( turnServers : AsyncGenerator < ITurnServer > , initialServer : ITurnServer ) : Promise < void > {
622
624
try {
623
625
await this . transport . send < IUpdateTurnServersRequestData > (
624
626
WidgetApiToWidgetAction . UpdateTurnServers ,
@@ -683,7 +685,7 @@ export class ClientWidgetApi extends EventEmitter {
683
685
}
684
686
}
685
687
686
- private async handleReadRelations ( request : IReadRelationsFromWidgetActionRequest ) {
688
+ private async handleReadRelations ( request : IReadRelationsFromWidgetActionRequest ) : Promise < void > {
687
689
if ( ! request . data . event_id ) {
688
690
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
689
691
error : { message : "Invalid request - missing event ID" } ,
@@ -732,7 +734,7 @@ export class ClientWidgetApi extends EventEmitter {
732
734
}
733
735
}
734
736
735
- private async handleUserDirectorySearch ( request : IUserDirectorySearchFromWidgetActionRequest ) {
737
+ private async handleUserDirectorySearch ( request : IUserDirectorySearchFromWidgetActionRequest ) : Promise < void > {
736
738
if ( ! this . hasCapability ( MatrixCapabilities . MSC3973UserDirectorySearch ) ) {
737
739
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
738
740
error : { message : "Missing capability" } ,
@@ -773,15 +775,15 @@ export class ClientWidgetApi extends EventEmitter {
773
775
}
774
776
}
775
777
776
- private async handleGetMediaConfig ( request : IGetMediaConfigActionFromWidgetActionRequest ) {
778
+ private async handleGetMediaConfig ( request : IGetMediaConfigActionFromWidgetActionRequest ) : Promise < void > {
777
779
if ( ! this . hasCapability ( MatrixCapabilities . MSC4039UploadFile ) ) {
778
780
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
779
781
error : { message : "Missing capability" } ,
780
782
} ) ;
781
783
}
782
784
783
785
try {
784
- const result = await this . driver . getMediaConfig ( )
786
+ const result = await this . driver . getMediaConfig ( ) ;
785
787
786
788
return this . transport . reply < IGetMediaConfigActionFromWidgetResponseData > (
787
789
request ,
@@ -793,7 +795,7 @@ export class ClientWidgetApi extends EventEmitter {
793
795
}
794
796
}
795
797
796
- private async handleUploadFile ( request : IUploadFileActionFromWidgetActionRequest ) {
798
+ private async handleUploadFile ( request : IUploadFileActionFromWidgetActionRequest ) : Promise < void > {
797
799
if ( ! this . hasCapability ( MatrixCapabilities . MSC4039UploadFile ) ) {
798
800
return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
799
801
error : { message : "Missing capability" } ,
@@ -833,7 +835,7 @@ export class ClientWidgetApi extends EventEmitter {
833
835
}
834
836
}
835
837
836
- private handleDriverError ( e : unknown , request : IWidgetApiRequest , message : string ) {
838
+ private handleDriverError ( e : unknown , request : IWidgetApiRequest , message : string ) : void {
837
839
const data = this . driver . processError ( e ) ;
838
840
this . transport . reply < IWidgetApiErrorResponseData > ( request , {
839
841
error : {
@@ -843,7 +845,7 @@ export class ClientWidgetApi extends EventEmitter {
843
845
} ) ;
844
846
}
845
847
846
- private handleMessage ( ev : CustomEvent < IWidgetApiRequest > ) {
848
+ private handleMessage ( ev : CustomEvent < IWidgetApiRequest > ) : void | Promise < void > {
847
849
if ( this . isStopped ) return ;
848
850
const actionEv = new CustomEvent ( `action:${ ev . detail . action } ` , {
849
851
detail : ev . detail ,
@@ -875,7 +877,7 @@ export class ClientWidgetApi extends EventEmitter {
875
877
case WidgetApiFromWidgetAction . MSC3869ReadRelations :
876
878
return this . handleReadRelations ( < IReadRelationsFromWidgetActionRequest > ev . detail ) ;
877
879
case WidgetApiFromWidgetAction . MSC3973UserDirectorySearch :
878
- return this . handleUserDirectorySearch ( < IUserDirectorySearchFromWidgetActionRequest > ev . detail )
880
+ return this . handleUserDirectorySearch ( < IUserDirectorySearchFromWidgetActionRequest > ev . detail ) ;
879
881
case WidgetApiFromWidgetAction . BeeperReadRoomAccountData :
880
882
return this . handleReadRoomAccountData ( < IReadRoomAccountDataFromWidgetActionRequest > ev . detail ) ;
881
883
case WidgetApiFromWidgetAction . MSC4039GetMediaConfigAction :
0 commit comments