Skip to content

Commit ee7e4cc

Browse files
committed
refactor(widget): Extract method for message-like event reading response
1 parent 36244e6 commit ee7e4cc

File tree

1 file changed

+31
-21
lines changed
  • crates/matrix-sdk/src/widget/machine

1 file changed

+31
-21
lines changed

crates/matrix-sdk/src/widget/machine/mod.rs

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use driver_req::UpdateDelayedEventRequest;
2020
use from_widget::{SendToDeviceEventResponse, UpdateDelayedEventResponse};
2121
use indexmap::IndexMap;
2222
use ruma::{
23+
events::AnyTimelineEvent,
2324
serde::{JsonObject, Raw},
2425
OwnedRoomId,
2526
};
@@ -53,7 +54,7 @@ use super::{
5354
filter::FilterInput,
5455
Capabilities, StateKeySelector,
5556
};
56-
use crate::Result;
57+
use crate::{Error, Result};
5758

5859
mod driver_req;
5960
mod from_widget;
@@ -236,7 +237,7 @@ impl WidgetMachine {
236237
Err(e) => {
237238
return vec![Self::send_from_widget_err_response(
238239
raw_request,
239-
FromWidgetErrorResponse::from_error(crate::Error::SerdeJson(e)),
240+
FromWidgetErrorResponse::from_error(Error::SerdeJson(e)),
240241
)]
241242
}
242243
};
@@ -340,6 +341,33 @@ impl WidgetMachine {
340341
}
341342
}
342343

344+
/// Send a response to a request to read message-like events.
345+
///
346+
/// `events` represents the message-like events provided by the
347+
/// [`crate::widget::MatrixDriver`].
348+
fn send_read_message_like_event_response(
349+
&self,
350+
request: Raw<FromWidgetRequest>,
351+
events: Result<Vec<Raw<AnyTimelineEvent>>, Error>,
352+
) -> Vec<Action> {
353+
let response = match &self.capabilities {
354+
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
355+
"Received read event request before capabilities negotiation",
356+
)),
357+
CapabilitiesState::Negotiating => Err(FromWidgetErrorResponse::from_string(
358+
"Received read event request while capabilities were negotiating",
359+
)),
360+
CapabilitiesState::Negotiated(capabilities) => events
361+
.map(|mut events| {
362+
events.retain(|e| capabilities.allow_reading(e));
363+
ReadEventResponse { events }
364+
})
365+
.map_err(FromWidgetErrorResponse::from_error),
366+
};
367+
368+
vec![WidgetMachine::send_from_widget_response(request, response)]
369+
}
370+
343371
fn process_read_event_request(
344372
&mut self,
345373
request: ReadEventRequest,
@@ -367,26 +395,8 @@ impl WidgetMachine {
367395

368396
self.send_matrix_driver_request(request).map(|(request, action)| {
369397
request.add_response_handler(|result, machine| {
370-
let response = match &machine.capabilities {
371-
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
372-
"Received read event request before capabilities negotiation",
373-
)),
374-
CapabilitiesState::Negotiating => {
375-
Err(FromWidgetErrorResponse::from_string(
376-
"Received read event request while capabilities were negotiating",
377-
))
378-
}
379-
CapabilitiesState::Negotiated(capabilities) => result
380-
.map(|mut events| {
381-
events.retain(|e| capabilities.allow_reading(e));
382-
ReadEventResponse { events }
383-
})
384-
.map_err(FromWidgetErrorResponse::from_error),
385-
};
386-
387-
vec![Self::send_from_widget_response(raw_request, response)]
398+
machine.send_read_message_like_event_response(raw_request, result)
388399
});
389-
390400
action
391401
})
392402
}

0 commit comments

Comments
 (0)