@@ -22,7 +22,7 @@ import { WidgetApiDirection } from "./interfaces/WidgetApiDirection";
2222import { IWidgetApiRequest , IWidgetApiRequestEmptyData } from "./interfaces/IWidgetApiRequest" ;
2323import { IContentLoadedActionRequest } from "./interfaces/ContentLoadedAction" ;
2424import { WidgetApiFromWidgetAction , WidgetApiToWidgetAction } from "./interfaces/WidgetApiAction" ;
25- import { IWidgetApiErrorResponseData , isMatrixError } from "./interfaces/IWidgetApiErrorResponse" ;
25+ import { IWidgetApiErrorResponseData } from "./interfaces/IWidgetApiErrorResponse" ;
2626import { Capability , MatrixCapabilities } from "./interfaces/Capabilities" ;
2727import { IOpenIDUpdate , ISendEventDetails , ISendDelayedEventDetails , WidgetDriver } from "./driver/WidgetDriver" ;
2828import {
@@ -330,15 +330,13 @@ export class ClientWidgetApi extends EventEmitter {
330330 } ) ;
331331 }
332332
333- const onErr = ( e : any ) => {
333+ const onErr = ( e : unknown ) => {
334334 console . error ( "[ClientWidgetApi] Failed to handle navigation: " , e ) ;
335- return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
336- error : { message : "Error handling navigation" } ,
337- } ) ;
335+ this . handleDriverError ( e , request , "Error handling navigation" ) ;
338336 } ;
339337
340338 try {
341- this . driver . navigate ( request . data . uri . toString ( ) ) . catch ( e => onErr ( e ) ) . then ( ( ) => {
339+ this . driver . navigate ( request . data . uri . toString ( ) ) . catch ( ( e : unknown ) => onErr ( e ) ) . then ( ( ) => {
342340 return this . transport . reply < IWidgetApiAcknowledgeResponseData > ( request , { } ) ;
343341 } ) ;
344342 } catch ( e ) {
@@ -556,12 +554,7 @@ export class ClientWidgetApi extends EventEmitter {
556554 } ) ;
557555 } ) . catch ( ( e : unknown ) => {
558556 console . error ( "error sending event: " , e ) ;
559- return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
560- error : {
561- message : "Error sending event" ,
562- ...( isMatrixError ( e ) && e ) ,
563- } ,
564- } ) ;
557+ this . handleDriverError ( e , request , "Error sending event" ) ;
565558 } ) ;
566559 }
567560
@@ -586,12 +579,7 @@ export class ClientWidgetApi extends EventEmitter {
586579 return this . transport . reply < IWidgetApiAcknowledgeResponseData > ( request , { } ) ;
587580 } ) . catch ( ( e : unknown ) => {
588581 console . error ( "error updating delayed event: " , e ) ;
589- return this . transport . reply < IWidgetApiErrorResponseData > ( request , {
590- error : {
591- message : "Error updating delayed event" ,
592- ...( isMatrixError ( e ) && e ) ,
593- } ,
594- } ) ;
582+ this . handleDriverError ( e , request , "Error updating delayed event" ) ;
595583 } ) ;
596584 break ;
597585 default :
@@ -624,9 +612,7 @@ export class ClientWidgetApi extends EventEmitter {
624612 await this . transport . reply < ISendToDeviceFromWidgetResponseData > ( request , { } ) ;
625613 } catch ( e ) {
626614 console . error ( "error sending to-device event" , e ) ;
627- await this . transport . reply < IWidgetApiErrorResponseData > ( request , {
628- error : { message : "Error sending event" } ,
629- } ) ;
615+ this . handleDriverError ( e , request , "Error sending event" ) ;
630616 }
631617 }
632618 }
@@ -741,12 +727,7 @@ export class ClientWidgetApi extends EventEmitter {
741727 ) ;
742728 } catch ( e ) {
743729 console . error ( "error getting the relations" , e ) ;
744- await this . transport . reply < IWidgetApiErrorResponseData > ( request , {
745- error : {
746- message : "Unexpected error while reading relations" ,
747- ...( isMatrixError ( e ) && e ) ,
748- } ,
749- } ) ;
730+ this . handleDriverError ( e , request , "Unexpected error while reading relations" ) ;
750731 }
751732 }
752733
@@ -787,12 +768,7 @@ export class ClientWidgetApi extends EventEmitter {
787768 ) ;
788769 } catch ( e ) {
789770 console . error ( "error searching in the user directory" , e ) ;
790- await this . transport . reply < IWidgetApiErrorResponseData > ( request , {
791- error : {
792- message : "Unexpected error while searching in the user directory" ,
793- ...( isMatrixError ( e ) && e ) ,
794- } ,
795- } ) ;
771+ this . handleDriverError ( e , request , "Unexpected error while searching in the user directory" ) ;
796772 }
797773 }
798774
@@ -812,12 +788,7 @@ export class ClientWidgetApi extends EventEmitter {
812788 ) ;
813789 } catch ( e ) {
814790 console . error ( "error while getting the media configuration" , e ) ;
815- await this . transport . reply < IWidgetApiErrorResponseData > ( request , {
816- error : {
817- message : "Unexpected error while getting the media configuration" ,
818- ...( isMatrixError ( e ) && e ) ,
819- } ,
820- } ) ;
791+ this . handleDriverError ( e , request , "Unexpected error while getting the media configuration" ) ;
821792 }
822793 }
823794
@@ -837,12 +808,7 @@ export class ClientWidgetApi extends EventEmitter {
837808 ) ;
838809 } catch ( e ) {
839810 console . error ( "error while uploading a file" , e ) ;
840- await this . transport . reply < IWidgetApiErrorResponseData > ( request , {
841- error : {
842- message : "Unexpected error while uploading a file" ,
843- ...( isMatrixError ( e ) && e ) ,
844- } ,
845- } ) ;
811+ this . handleDriverError ( e , request , "Unexpected error while uploading a file" ) ;
846812 }
847813 }
848814
@@ -862,12 +828,20 @@ export class ClientWidgetApi extends EventEmitter {
862828 ) ;
863829 } catch ( e ) {
864830 console . error ( "error while downloading a file" , e ) ;
865- this . transport . reply < IWidgetApiErrorResponseData > ( request , {
866- error : { message : "Unexpected error while downloading a file" } ,
867- } ) ;
831+ this . handleDriverError ( e , request , "Unexpected error while downloading a file" ) ;
868832 }
869833 }
870834
835+ private handleDriverError ( e : unknown , request : IWidgetApiRequest , message : string ) {
836+ const matrixApiError = this . driver . processError ( e ) ;
837+ this . transport . reply < IWidgetApiErrorResponseData > ( request , {
838+ error : {
839+ message,
840+ ...( matrixApiError && { matrix_api_error : { ...matrixApiError } } ) ,
841+ } ,
842+ } ) ;
843+ }
844+
871845 private handleMessage ( ev : CustomEvent < IWidgetApiRequest > ) {
872846 if ( this . isStopped ) return ;
873847 const actionEv = new CustomEvent ( `action:${ ev . detail . action } ` , {
0 commit comments