@@ -173,8 +173,9 @@ impl WidgetMachine {
173
173
capabilities
174
174
. raw_event_matches_read_filter ( & event)
175
175
. then ( || {
176
- let action = self . send_to_widget_request ( NotifyNewMatrixEvent ( event) ) . 1 ;
177
- action. map ( |a| vec ! [ a] ) . unwrap_or_default ( )
176
+ self . send_to_widget_request ( NotifyNewMatrixEvent ( event) )
177
+ . map ( |( _request, action) | vec ! [ action] )
178
+ . unwrap_or_default ( )
178
179
} )
179
180
. unwrap_or_default ( )
180
181
}
@@ -260,9 +261,10 @@ impl WidgetMachine {
260
261
}
261
262
} ;
262
263
263
- let action =
264
- machine. send_to_widget_request ( NotifyOpenIdChanged ( response) ) . 1 ;
265
- action. map ( |a| vec ! [ a] ) . unwrap_or_default ( )
264
+ machine
265
+ . send_to_widget_request ( NotifyOpenIdChanged ( response) )
266
+ . map ( |( _request, action) | vec ! [ action] )
267
+ . unwrap_or_default ( )
266
268
} ) ;
267
269
268
270
request_action
@@ -562,7 +564,7 @@ impl WidgetMachine {
562
564
fn send_to_widget_request < T : ToWidgetRequest > (
563
565
& mut self ,
564
566
to_widget_request : T ,
565
- ) -> ( ToWidgetRequestHandle < ' _ , T :: ResponseData > , Option < Action > ) {
567
+ ) -> Option < ( ToWidgetRequestHandle < ' _ , T :: ResponseData > , Action ) > {
566
568
#[ derive( Serialize ) ]
567
569
#[ serde( tag = "api" , rename = "toWidget" , rename_all = "camelCase" ) ]
568
570
struct ToWidgetRequestSerdeHelper < ' a , T > {
@@ -583,11 +585,11 @@ impl WidgetMachine {
583
585
let request_meta = ToWidgetRequestMeta :: new ( T :: ACTION ) ;
584
586
let Some ( meta) = self . pending_to_widget_requests . insert ( request_id, request_meta) else {
585
587
warn ! ( "Reached limits of pending requests for toWidget requests" ) ;
586
- return ( ToWidgetRequestHandle :: null ( ) , None ) ;
588
+ return None ;
587
589
} ;
588
590
589
591
let serialized = serde_json:: to_string ( & full_request) . expect ( "Failed to serialize request" ) ;
590
- ( ToWidgetRequestHandle :: new ( meta) , Some ( Action :: SendToWidget ( serialized) ) )
592
+ Some ( ( ToWidgetRequestHandle :: new ( meta) , Action :: SendToWidget ( serialized) ) )
591
593
}
592
594
593
595
#[ instrument( skip_all) ]
@@ -615,40 +617,46 @@ impl WidgetMachine {
615
617
matches ! ( & self . capabilities, CapabilitiesState :: Negotiated ( c) if !c. read. is_empty( ) ) ;
616
618
self . capabilities = CapabilitiesState :: Negotiating ;
617
619
618
- let ( request, action) = self . send_to_widget_request ( RequestCapabilities { } ) ;
619
-
620
- request. then ( |response, machine| {
621
- let requested = response. capabilities ;
622
-
623
- if let Some ( ( request, action) ) =
624
- machine. send_matrix_driver_request ( AcquireCapabilities {
625
- desired_capabilities : requested. clone ( ) ,
626
- } )
627
- {
628
- request. then ( |result, machine| {
629
- let approved = result. unwrap_or_else ( |e| {
630
- error ! ( "Acquiring capabilities failed: {e}" ) ;
631
- Capabilities :: default ( )
632
- } ) ;
633
-
634
- let subscribe_required = !approved. read . is_empty ( ) ;
635
- machine. capabilities = CapabilitiesState :: Negotiated ( approved. clone ( ) ) ;
636
-
637
- let update = NotifyCapabilitiesChanged { approved, requested } ;
638
- let ( _request, action) = machine. send_to_widget_request ( update) ;
620
+ let action =
621
+ self . send_to_widget_request ( RequestCapabilities { } ) . map ( |( request, action) | {
622
+ request. then ( |response, machine| {
623
+ let requested = response. capabilities ;
624
+
625
+ if let Some ( ( request, action) ) =
626
+ machine. send_matrix_driver_request ( AcquireCapabilities {
627
+ desired_capabilities : requested. clone ( ) ,
628
+ } )
629
+ {
630
+ request. then ( |result, machine| {
631
+ let approved = result. unwrap_or_else ( |e| {
632
+ error ! ( "Acquiring capabilities failed: {e}" ) ;
633
+ Capabilities :: default ( )
634
+ } ) ;
635
+
636
+ let subscribe_required = !approved. read . is_empty ( ) ;
637
+ machine. capabilities = CapabilitiesState :: Negotiated ( approved. clone ( ) ) ;
638
+
639
+ let update = NotifyCapabilitiesChanged { approved, requested } ;
640
+
641
+ let action = machine
642
+ . send_to_widget_request ( update)
643
+ . map ( |( _request, action) | action) ;
644
+
645
+ subscribe_required
646
+ . then_some ( Action :: Subscribe )
647
+ . into_iter ( )
648
+ . chain ( action)
649
+ . collect ( )
650
+ } ) ;
639
651
640
- subscribe_required
641
- . then_some ( Action :: Subscribe )
642
- . into_iter ( )
643
- . chain ( action)
644
- . collect ( )
652
+ vec ! [ action]
653
+ } else {
654
+ Vec :: new ( )
655
+ }
645
656
} ) ;
646
657
647
- vec ! [ action]
648
- } else {
649
- Vec :: new ( )
650
- }
651
- } ) ;
658
+ action
659
+ } ) ;
652
660
653
661
unsubscribe_required. then_some ( Action :: Unsubscribe ) . into_iter ( ) . chain ( action) . collect ( )
654
662
}
0 commit comments