@@ -54,7 +54,7 @@ use super::{
5454 filter:: { MatrixEventContent , MatrixEventFilterInput } ,
5555 Capabilities , StateKeySelector ,
5656} ;
57- use crate :: { widget:: EventFilter , Error } ;
57+ use crate :: { widget:: EventFilter , Result } ;
5858
5959mod driver_req;
6060mod from_widget;
@@ -204,8 +204,10 @@ impl WidgetMachine {
204204 let request = match raw_request. deserialize ( ) {
205205 Ok ( r) => r,
206206 Err ( e) => {
207- return vec ! [ self
208- . send_from_widget_error_response( raw_request, ( & Error :: SerdeJson ( e) ) . into( ) ) ]
207+ return vec ! [ self . send_from_widget_error_response(
208+ raw_request,
209+ FromWidgetErrorResponse :: from_error( & crate :: Error :: SerdeJson ( e) ) ,
210+ ) ]
209211 }
210212 } ;
211213
@@ -255,13 +257,17 @@ impl WidgetMachine {
255257 let CapabilitiesState :: Negotiated ( capabilities) = & self . capabilities else {
256258 let text =
257259 "Received send update delayed event request before capabilities were negotiated" ;
258- return vec ! [ self . send_from_widget_error_response( raw_request, text. into( ) ) ] ;
260+ return vec ! [ self . send_from_widget_error_response(
261+ raw_request,
262+ FromWidgetErrorResponse :: from_string( text) ,
263+ ) ] ;
259264 } ;
260265 if !capabilities. update_delayed_event {
261266 return vec ! [ self . send_from_widget_error_response(
262267 raw_request,
263- format!( "Not allowed: missing the {UPDATE_DELAYED_EVENT} capability." )
264- . into( ) ,
268+ FromWidgetErrorResponse :: from_string( format!(
269+ "Not allowed: missing the {UPDATE_DELAYED_EVENT} capability."
270+ ) ) ,
265271 ) ] ;
266272 }
267273 let ( request, request_action) =
@@ -276,7 +282,7 @@ impl WidgetMachine {
276282 // does not impl Serialize
277283 match result {
278284 Ok ( response) => Ok ( Into :: <UpdateDelayedEventResponse >:: into( response) ) ,
279- Err ( e) => Err ( ( & e) . into ( ) ) ,
285+ Err ( e) => Err ( FromWidgetErrorResponse :: from_error ( & e) ) , //---
280286 } ,
281287 ) ]
282288 } ) ;
@@ -292,7 +298,10 @@ impl WidgetMachine {
292298 ) -> Option < Action > {
293299 let CapabilitiesState :: Negotiated ( capabilities) = & self . capabilities else {
294300 let text = "Received read event request before capabilities were negotiated" ;
295- return Some ( self . send_from_widget_error_response ( raw_request, text. into ( ) ) ) ;
301+ return Some ( self . send_from_widget_error_response (
302+ raw_request,
303+ FromWidgetErrorResponse :: from_string ( text) ,
304+ ) ) ;
296305 } ;
297306
298307 match request {
@@ -301,7 +310,9 @@ impl WidgetMachine {
301310 if !capabilities. read . iter ( ) . any ( filter_fn) {
302311 return Some ( self . send_from_widget_error_response (
303312 raw_request,
304- "Not allowed to read message like event" . into ( ) ,
313+ FromWidgetErrorResponse :: from_string (
314+ "Not allowed to read message like event" ,
315+ ) ,
305316 ) ) ;
306317 }
307318
@@ -316,14 +327,16 @@ impl WidgetMachine {
316327 Ok ( ReadEventResponse { events } )
317328 }
318329 ( Ok ( _) , CapabilitiesState :: Unset ) => {
319- Err ( "Received read event request before capabilities negotiation"
320- . into ( ) )
330+ Err ( FromWidgetErrorResponse :: from_string (
331+ "Received read event request before capabilities negotiation" ,
332+ ) )
321333 }
322334 ( Ok ( _) , CapabilitiesState :: Negotiating ) => {
323- Err ( "Received read event request while capabilities were negotiating"
324- . into ( ) )
335+ Err ( FromWidgetErrorResponse :: from_string (
336+ "Received read event request while capabilities were negotiating" ,
337+ ) )
325338 }
326- ( Err ( e) , _) => Err ( ( & e) . into ( ) ) ,
339+ ( Err ( e) , _) => Err ( FromWidgetErrorResponse :: from_error ( & e) ) ,
327340 } ;
328341 vec ! [ machine. send_from_widget_result_response( raw_request, response) ]
329342 } ) ;
@@ -354,14 +367,14 @@ impl WidgetMachine {
354367 request. then ( |result, machine| {
355368 let response = result
356369 . map ( |events| ReadEventResponse { events } )
357- . map_err ( |e| ( & e) . into ( ) ) ;
370+ . map_err ( |e| FromWidgetErrorResponse :: from_error ( & e) ) ;
358371 vec ! [ machine. send_from_widget_result_response( raw_request, response) ]
359372 } ) ;
360373 action
361374 } else {
362375 Some ( self . send_from_widget_error_response (
363376 raw_request,
364- "Not allowed to read state event" . into ( ) ,
377+ FromWidgetErrorResponse :: from_string ( "Not allowed to read state event" ) ,
365378 ) )
366379 }
367380 }
@@ -391,25 +404,27 @@ impl WidgetMachine {
391404 if !capabilities. send_delayed_event && request. delay . is_some ( ) {
392405 return Some ( self . send_from_widget_error_response (
393406 raw_request,
394- format ! ( "Not allowed: missing the {SEND_DELAYED_EVENT} capability." ) . into ( ) ,
407+ FromWidgetErrorResponse :: from_string ( format ! (
408+ "Not allowed: missing the {SEND_DELAYED_EVENT} capability."
409+ ) ) ,
395410 ) ) ;
396411 }
397412 if !capabilities. send . iter ( ) . any ( |filter| filter. matches ( & filter_in) ) {
398- return Some (
399- self . send_from_widget_error_response (
400- raw_request,
401- "Not allowed to send event" . into ( ) ,
402- ) ,
403- ) ;
413+ return Some ( self . send_from_widget_error_response (
414+ raw_request,
415+ FromWidgetErrorResponse :: from_string ( "Not allowed to send event" ) ,
416+ ) ) ;
404417 }
405418
406419 let ( request, action) = self . send_matrix_driver_request ( request) ;
407420 request. then ( |mut result, machine| {
408421 if let Ok ( r) = result. as_mut ( ) {
409422 r. set_room_id ( machine. room_id . clone ( ) ) ;
410423 }
411- vec ! [ machine
412- . send_from_widget_result_response( raw_request, result. map_err( |e| ( & e) . into( ) ) ) ]
424+ vec ! [ machine. send_from_widget_result_response(
425+ raw_request,
426+ result. map_err( |e| FromWidgetErrorResponse :: from_error( & e) ) ,
427+ ) ]
413428 } ) ;
414429 action
415430 }
@@ -451,7 +466,7 @@ impl WidgetMachine {
451466 fn process_matrix_driver_response (
452467 & mut self ,
453468 request_id : Uuid ,
454- response : Result < MatrixDriverResponse , Error > ,
469+ response : Result < MatrixDriverResponse > ,
455470 ) -> Vec < Action > {
456471 match self . pending_matrix_driver_requests . extract ( & request_id) {
457472 Ok ( request) => request
@@ -598,7 +613,7 @@ impl ToWidgetRequestMeta {
598613}
599614
600615type MatrixDriverResponseFn =
601- Box < dyn FnOnce ( Result < MatrixDriverResponse , Error > , & mut WidgetMachine ) -> Vec < Action > + Send > ;
616+ Box < dyn FnOnce ( Result < MatrixDriverResponse > , & mut WidgetMachine ) -> Vec < Action > + Send > ;
602617
603618pub ( crate ) struct MatrixDriverRequestMeta {
604619 response_fn : Option < MatrixDriverResponseFn > ,
0 commit comments