@@ -251,31 +251,29 @@ impl WidgetMachine {
251251 let mut actions =
252252 vec ! [ Self :: send_from_widget_response( raw_request, Ok ( OpenIdResponse :: Pending ) ) ] ;
253253
254- if let Some ( request_action) = self . send_matrix_driver_request ( RequestOpenId ) . map (
255- |( request, request_action) | {
256- request. then ( |res, machine| {
257- let response = match res {
258- Ok ( res) => {
259- OpenIdResponse :: Allowed ( OpenIdState :: new ( request_id, res) )
260- }
261- Err ( msg) => {
262- info ! ( "OpenID request failed: {msg}" ) ;
263- OpenIdResponse :: Blocked { original_request_id : request_id }
264- }
265- } ;
266-
267- machine
268- . send_to_widget_request ( NotifyOpenIdChanged ( response) )
269- . map ( |( _request, action) | vec ! [ action] )
270- . unwrap_or_default ( )
271- } ) ;
272-
273- request_action
274- } ,
275- ) {
276- actions. push ( request_action) ;
277- }
254+ let Some ( ( request, request_action) ) =
255+ self . send_matrix_driver_request ( RequestOpenId )
256+ else {
257+ // We're done, return early.
258+ return actions;
259+ } ;
260+
261+ request. then ( |res, machine| {
262+ let response = match res {
263+ Ok ( res) => OpenIdResponse :: Allowed ( OpenIdState :: new ( request_id, res) ) ,
264+ Err ( msg) => {
265+ info ! ( "OpenID request failed: {msg}" ) ;
266+ OpenIdResponse :: Blocked { original_request_id : request_id }
267+ }
268+ } ;
278269
270+ machine
271+ . send_to_widget_request ( NotifyOpenIdChanged ( response) )
272+ . map ( |( _request, action) | vec ! [ action] )
273+ . unwrap_or_default ( )
274+ } ) ;
275+
276+ actions. push ( request_action) ;
279277 actions
280278 }
281279
@@ -347,21 +345,21 @@ impl WidgetMachine {
347345 self . send_matrix_driver_request ( request) . map ( |( request, action) | {
348346 request. then ( |result, machine| {
349347 let response = match & machine. capabilities {
350- CapabilitiesState :: Unset => Err ( FromWidgetErrorResponse :: from_string (
351- "Received read event request before capabilities negotiation" ,
352- ) ) ,
353- CapabilitiesState :: Negotiating => {
354- Err ( FromWidgetErrorResponse :: from_string (
355- "Received read event request while capabilities were negotiating" ,
356- ) )
357- }
358- CapabilitiesState :: Negotiated ( capabilities) => result
359- . map ( |mut events| {
360- events. retain ( |e| capabilities. raw_event_matches_read_filter ( e) ) ;
361- ReadEventResponse { events }
362- } )
363- . map_err ( FromWidgetErrorResponse :: from_error) ,
364- } ;
348+ CapabilitiesState :: Unset => Err ( FromWidgetErrorResponse :: from_string (
349+ "Received read event request before capabilities negotiation" ,
350+ ) ) ,
351+ CapabilitiesState :: Negotiating => {
352+ Err ( FromWidgetErrorResponse :: from_string (
353+ "Received read event request while capabilities were negotiating" ,
354+ ) )
355+ }
356+ CapabilitiesState :: Negotiated ( capabilities) => result
357+ . map ( |mut events| {
358+ events. retain ( |e| capabilities. raw_event_matches_read_filter ( e) ) ;
359+ ReadEventResponse { events }
360+ } )
361+ . map_err ( FromWidgetErrorResponse :: from_error) ,
362+ } ;
365363
366364 vec ! [ Self :: send_from_widget_response( raw_request, response) ]
367365 } ) ;
@@ -390,16 +388,16 @@ impl WidgetMachine {
390388 } ;
391389
392390 if allowed {
393- let request = ReadStateEventRequest { event_type, state_key } ;
394- self . send_matrix_driver_request ( request ) . map ( |( request, action) | {
395- request. then ( |result, _machine| {
396- let response = result
397- . map ( |events| ReadEventResponse { events } )
398- . map_err ( FromWidgetErrorResponse :: from_error) ;
399- vec ! [ Self :: send_from_widget_response( raw_request, response) ]
400- } ) ;
401- action
402- } )
391+ self . send_matrix_driver_request ( ReadStateEventRequest { event_type, state_key } )
392+ . map ( |( request, action) | {
393+ request. then ( |result, _machine| {
394+ let response = result
395+ . map ( |events| ReadEventResponse { events } )
396+ . map_err ( FromWidgetErrorResponse :: from_error) ;
397+ vec ! [ Self :: send_from_widget_response( raw_request, response) ]
398+ } ) ;
399+ action
400+ } )
403401 } else {
404402 Some ( Self :: send_from_widget_error_string_response (
405403 raw_request,
@@ -445,19 +443,19 @@ impl WidgetMachine {
445443 ) ) ;
446444 }
447445
448- self . send_matrix_driver_request ( request) . map ( |( request, action) | {
449- request. then ( |mut result, machine| {
450- if let Ok ( r) = result. as_mut ( ) {
451- r. set_room_id ( machine. room_id . clone ( ) ) ;
452- }
453- vec ! [ Self :: send_from_widget_response(
454- raw_request,
455- result. map_err( FromWidgetErrorResponse :: from_error) ,
456- ) ]
457- } ) ;
446+ let ( request, action) = self . send_matrix_driver_request ( request) ?;
447+
448+ request. then ( |mut result, machine| {
449+ if let Ok ( r) = result. as_mut ( ) {
450+ r. set_room_id ( machine. room_id . clone ( ) ) ;
451+ }
452+ vec ! [ Self :: send_from_widget_response(
453+ raw_request,
454+ result. map_err( FromWidgetErrorResponse :: from_error) ,
455+ ) ]
456+ } ) ;
458457
459- action
460- } )
458+ Some ( action)
461459 }
462460
463461 #[ instrument( skip_all, fields( ?request_id) ) ]
@@ -624,57 +622,53 @@ impl WidgetMachine {
624622
625623 self . capabilities = CapabilitiesState :: Negotiating ;
626624
627- if let Some ( action) =
628- self . send_to_widget_request ( RequestCapabilities { } ) . map ( | ( request , action ) | {
629- request . then ( |response , machine| {
630- let requested_capabilities = response . capabilities ;
625+ let Some ( ( request , action) ) = self . send_to_widget_request ( RequestCapabilities { } ) else {
626+ // We're done, return early.
627+ return actions ;
628+ } ;
631629
632- if let Some ( ( request, action) ) =
633- machine. send_matrix_driver_request ( AcquireCapabilities {
634- desired_capabilities : requested_capabilities. clone ( ) ,
635- } )
636- {
637- request. then ( |result, machine| {
638- let approved_capabilities = result. unwrap_or_else ( |e| {
639- error ! ( "Acquiring capabilities failed: {e}" ) ;
640- Capabilities :: default ( )
641- } ) ;
630+ request. then ( |response, machine| {
631+ let requested_capabilities = response. capabilities ;
642632
643- let mut actions = Vec :: new ( ) ;
644- if !approved_capabilities. read . is_empty ( ) {
645- actions. push ( Action :: Subscribe ) ;
646- }
633+ let Some ( ( request, action) ) = machine. send_matrix_driver_request ( AcquireCapabilities {
634+ desired_capabilities : requested_capabilities. clone ( ) ,
635+ } ) else {
636+ // We're done, return early.
637+ return Vec :: new ( ) ;
638+ } ;
639+
640+ request. then ( |result, machine| {
641+ let approved_capabilities = result. unwrap_or_else ( |e| {
642+ error ! ( "Acquiring capabilities failed: {e}" ) ;
643+ Capabilities :: default ( )
644+ } ) ;
647645
648- machine. capabilities =
649- CapabilitiesState :: Negotiated ( approved_capabilities. clone ( ) ) ;
646+ let mut actions = Vec :: new ( ) ;
647+ if !approved_capabilities. read . is_empty ( ) {
648+ actions. push ( Action :: Subscribe ) ;
649+ }
650650
651- let notify_caps_changed = NotifyCapabilitiesChanged {
652- approved : approved_capabilities,
653- requested : requested_capabilities,
654- } ;
651+ machine. capabilities = CapabilitiesState :: Negotiated ( approved_capabilities. clone ( ) ) ;
655652
656- if let Some ( action) = machine
657- . send_to_widget_request ( notify_caps_changed)
658- . map ( |( _request, action) | action)
659- {
660- actions. push ( action) ;
661- }
653+ let notify_caps_changed = NotifyCapabilitiesChanged {
654+ approved : approved_capabilities,
655+ requested : requested_capabilities,
656+ } ;
662657
663- actions
664- } ) ;
658+ if let Some ( action) = machine
659+ . send_to_widget_request ( notify_caps_changed)
660+ . map ( |( _request, action) | action)
661+ {
662+ actions. push ( action) ;
663+ }
665664
666- vec ! [ action]
667- } else {
668- Vec :: new ( )
669- }
670- } ) ;
665+ actions
666+ } ) ;
671667
672- action
673- } )
674- {
675- actions. push ( action) ;
676- }
668+ vec ! [ action]
669+ } ) ;
677670
671+ actions. push ( action) ;
678672 actions
679673 }
680674}
0 commit comments