Skip to content

Commit cc18065

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

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;
@@ -218,7 +219,7 @@ impl WidgetMachine {
218219
Err(e) => {
219220
return vec![Self::send_from_widget_err_response(
220221
raw_request,
221-
FromWidgetErrorResponse::from_error(crate::Error::SerdeJson(e)),
222+
FromWidgetErrorResponse::from_error(Error::SerdeJson(e)),
222223
)]
223224
}
224225
};
@@ -317,6 +318,33 @@ impl WidgetMachine {
317318
}
318319
}
319320

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

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

0 commit comments

Comments
 (0)