@@ -24,7 +24,7 @@ use imbl::Vector;
2424use matrix_sdk:: Result ;
2525use matrix_sdk:: {
2626 deserialized_responses:: TimelineEvent ,
27- event_cache:: { RoomEventCache , RoomPaginationStatus } ,
27+ event_cache:: { DecryptionRetryRequest , RoomEventCache , RoomPaginationStatus } ,
2828 paginators:: { PaginationResult , PaginationToken , Paginator } ,
2929 send_queue:: {
3030 LocalEcho , LocalEchoContent , RoomSendQueueUpdate , SendHandle , SendReactionHandle ,
@@ -73,6 +73,7 @@ use crate::{
7373 timeline:: {
7474 MsgLikeContent , MsgLikeKind , Room , TimelineEventFilterFn ,
7575 algorithms:: rfind_event_by_item_id,
76+ controller:: decryption_retry_task:: compute_redecryption_candidates,
7677 date_dividers:: DateDividerAdjuster ,
7778 event_item:: TimelineItemHandle ,
7879 pinned_events_loader:: { PinnedEventsLoader , PinnedEventsLoaderError } ,
@@ -1766,7 +1767,16 @@ impl TimelineController {
17661767
17671768 #[ instrument( skip( self ) , fields( room_id = ?self . room( ) . room_id( ) ) ) ]
17681769 pub ( super ) async fn retry_event_decryption ( & self , session_ids : Option < BTreeSet < String > > ) {
1769- self . retry_event_decryption_inner ( session_ids) . await
1770+ let state = self . state . read ( ) . await ;
1771+ let ( utds, decrypted) = compute_redecryption_candidates ( & state. items ) ;
1772+
1773+ let request = DecryptionRetryRequest {
1774+ room_id : self . room ( ) . room_id ( ) . to_owned ( ) ,
1775+ utd_session_ids : utds,
1776+ refresh_info_session_ids : decrypted,
1777+ } ;
1778+
1779+ self . room ( ) . client ( ) . event_cache ( ) . request_decryption ( request) ;
17701780 }
17711781
17721782 /// Combine the global (event cache) pagination status with the local state
0 commit comments