Skip to content

Commit e9c8f10

Browse files
committed
chore: Remove the various redecrytion tasks
1 parent 6e97607 commit e9c8f10

File tree

8 files changed

+106
-882
lines changed

8 files changed

+106
-882
lines changed

crates/matrix-sdk-ui/src/timeline/controller/decryption_retry_task.rs

Lines changed: 14 additions & 384 deletions
Large diffs are not rendered by default.

crates/matrix-sdk-ui/src/timeline/controller/mod.rs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use std::{collections::BTreeSet, fmt, sync::Arc};
1616

1717
use as_variant::as_variant;
18-
use decryption_retry_task::DecryptionRetryTask;
1918
use eyeball_im::{VectorDiff, VectorSubscriberStream};
2019
use eyeball_im_util::vector::{FilterMap, VectorObserverExt};
2120
use futures_core::Stream;
@@ -262,10 +261,6 @@ pub(super) struct TimelineController<P: RoomDataProvider = Room> {
262261

263262
/// Settings applied to this timeline.
264263
pub(super) settings: TimelineSettings,
265-
266-
/// Long-running task used to retry decryption of timeline items without
267-
/// blocking main processing.
268-
decryption_retry_task: DecryptionRetryTask<P, P>,
269264
}
270265

271266
#[derive(Clone)]
@@ -427,10 +422,7 @@ impl<P: RoomDataProvider> TimelineController<P> {
427422
is_room_encrypted,
428423
)));
429424

430-
let decryption_retry_task =
431-
DecryptionRetryTask::new(state.clone(), room_data_provider.clone());
432-
433-
Self { state, focus, room_data_provider, settings, decryption_retry_task }
425+
Self { state, focus, room_data_provider, settings }
434426
}
435427

436428
/// Initializes the configured focus with appropriate data.
@@ -1268,10 +1260,11 @@ impl<P: RoomDataProvider> TimelineController<P> {
12681260
true
12691261
}
12701262

1271-
pub(crate) async fn retry_event_decryption_inner(&self, session_ids: Option<BTreeSet<String>>) {
1272-
self.decryption_retry_task
1273-
.decrypt(self.room_data_provider.clone(), session_ids, self.settings.clone())
1274-
.await;
1263+
pub(super) async fn compute_redecryption_candidates(
1264+
&self,
1265+
) -> (BTreeSet<String>, BTreeSet<String>) {
1266+
let state = self.state.read().await;
1267+
compute_redecryption_candidates(&state.items)
12751268
}
12761269

12771270
pub(super) async fn set_sender_profiles_pending(&self) {
@@ -1767,8 +1760,7 @@ impl TimelineController {
17671760

17681761
#[instrument(skip(self), fields(room_id = ?self.room().room_id()))]
17691762
pub(super) async fn retry_event_decryption(&self, session_ids: Option<BTreeSet<String>>) {
1770-
let state = self.state.read().await;
1771-
let (utds, decrypted) = compute_redecryption_candidates(&state.items);
1763+
let (utds, decrypted) = self.compute_redecryption_candidates().await;
17721764

17731765
let request = DecryptionRetryRequest {
17741766
room_id: self.room().room_id().to_owned(),

crates/matrix-sdk-ui/src/timeline/controller/state.rs

Lines changed: 3 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use std::{future::Future, sync::Arc};
15+
use std::sync::Arc;
1616

1717
use eyeball_im::VectorDiff;
1818
use matrix_sdk::{deserialized_responses::TimelineEvent, send_queue::SendHandle};
@@ -28,11 +28,9 @@ use tracing::{instrument, trace, warn};
2828

2929
use super::{
3030
super::{
31-
Profile, TimelineItem,
31+
Profile,
3232
date_dividers::DateDividerAdjuster,
33-
event_handler::{
34-
Flow, TimelineAction, TimelineEventContext, TimelineEventHandler, TimelineItemPosition,
35-
},
33+
event_handler::{Flow, TimelineAction, TimelineEventContext, TimelineEventHandler},
3634
event_item::RemoteEventOrigin,
3735
traits::RoomDataProvider,
3836
},
@@ -199,53 +197,6 @@ impl<P: RoomDataProvider> TimelineState<P> {
199197
txn.commit();
200198
}
201199

202-
pub(super) async fn retry_event_decryption<Fut>(
203-
&mut self,
204-
retry_one: impl Fn(Arc<TimelineItem>) -> Fut,
205-
retry_indices: Vec<usize>,
206-
room_data_provider: &P,
207-
settings: &TimelineSettings,
208-
) where
209-
Fut: Future<Output = Option<TimelineEvent>>,
210-
{
211-
let mut txn = self.transaction();
212-
213-
let mut date_divider_adjuster =
214-
DateDividerAdjuster::new(settings.date_divider_mode.clone());
215-
216-
// Loop through all the indices, in order so we don't decrypt edits
217-
// before the event being edited, if both were UTD. Keep track of
218-
// index change as UTDs are removed instead of updated.
219-
let mut offset = 0;
220-
for idx in retry_indices {
221-
let idx = idx - offset;
222-
let Some(event) = retry_one(txn.items[idx].clone()).await else {
223-
continue;
224-
};
225-
226-
let removed_item = txn
227-
.handle_remote_event(
228-
event,
229-
TimelineItemPosition::UpdateAt { timeline_item_index: idx },
230-
room_data_provider,
231-
settings,
232-
&mut date_divider_adjuster,
233-
&mut Default::default(),
234-
)
235-
.await;
236-
237-
// If the UTD was removed rather than updated, offset all
238-
// subsequent loop iterations.
239-
if removed_item {
240-
offset += 1;
241-
}
242-
}
243-
244-
txn.adjust_date_dividers(date_divider_adjuster);
245-
246-
txn.commit();
247-
}
248-
249200
#[cfg(test)]
250201
pub(super) fn handle_read_receipts(
251202
&mut self,

crates/matrix-sdk-ui/src/timeline/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ mod subscriber;
8484
mod tasks;
8585
#[cfg(test)]
8686
mod tests;
87-
mod to_device;
8887
mod traits;
8988
mod virtual_item;
9089

0 commit comments

Comments
 (0)