Skip to content

Commit 0e76b51

Browse files
committed
refactor(widget): Extract method for message-like event reading response
1 parent 8b4be4a commit 0e76b51

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::UpdateDelayedEventResponse;
2121
use indexmap::IndexMap;
2222
use ruma::{
23+
events::AnyTimelineEvent,
2324
serde::{JsonObject, Raw},
2425
OwnedRoomId,
2526
};
@@ -52,7 +53,7 @@ use super::{
5253
filter::FilterInput,
5354
Capabilities, StateKeySelector,
5455
};
55-
use crate::Result;
56+
use crate::{Error, Result};
5657

5758
mod driver_req;
5859
mod from_widget;
@@ -217,7 +218,7 @@ impl WidgetMachine {
217218
Err(e) => {
218219
return vec![Self::send_from_widget_err_response(
219220
raw_request,
220-
FromWidgetErrorResponse::from_error(crate::Error::SerdeJson(e)),
221+
FromWidgetErrorResponse::from_error(Error::SerdeJson(e)),
221222
)]
222223
}
223224
};
@@ -316,6 +317,33 @@ impl WidgetMachine {
316317
}
317318
}
318319

320+
/// Send a response to a request to read message-like events.
321+
///
322+
/// `events` represents the message-like events provided by the
323+
/// [`crate::widget::MatrixDriver`].
324+
fn send_read_message_like_event_response(
325+
&self,
326+
request: Raw<FromWidgetRequest>,
327+
events: Result<Vec<Raw<AnyTimelineEvent>>, Error>,
328+
) -> Vec<Action> {
329+
let response = match &self.capabilities {
330+
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
331+
"Received read event request before capabilities negotiation",
332+
)),
333+
CapabilitiesState::Negotiating => Err(FromWidgetErrorResponse::from_string(
334+
"Received read event request while capabilities were negotiating",
335+
)),
336+
CapabilitiesState::Negotiated(capabilities) => events
337+
.map(|mut events| {
338+
events.retain(|e| capabilities.allow_reading(e));
339+
ReadEventResponse { events }
340+
})
341+
.map_err(FromWidgetErrorResponse::from_error),
342+
};
343+
344+
vec![WidgetMachine::send_from_widget_response(request, response)]
345+
}
346+
319347
fn process_read_event_request(
320348
&mut self,
321349
request: ReadEventRequest,
@@ -343,26 +371,8 @@ impl WidgetMachine {
343371

344372
self.send_matrix_driver_request(request).map(|(request, action)| {
345373
request.then(|result, machine| {
346-
let response = match &machine.capabilities {
347-
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
348-
"Received read event request before capabilities negotiation",
349-
)),
350-
CapabilitiesState::Negotiating => {
351-
Err(FromWidgetErrorResponse::from_string(
352-
"Received read event request while capabilities were negotiating",
353-
))
354-
}
355-
CapabilitiesState::Negotiated(capabilities) => result
356-
.map(|mut events| {
357-
events.retain(|e| capabilities.allow_reading(e));
358-
ReadEventResponse { events }
359-
})
360-
.map_err(FromWidgetErrorResponse::from_error),
361-
};
362-
363-
vec![Self::send_from_widget_response(raw_request, response)]
374+
machine.send_read_message_like_event_response(raw_request, result)
364375
});
365-
366376
action
367377
})
368378
}

0 commit comments

Comments
 (0)