Skip to content

Commit 00f8708

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

File tree

1 file changed

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

1 file changed

+30
-21
lines changed

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

Lines changed: 30 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,32 @@ 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 [`crate::widget::MatrixDriver`].
323+
fn send_read_message_like_event_response(
324+
&self,
325+
request: Raw<FromWidgetRequest>,
326+
events: Result<Vec<Raw<AnyTimelineEvent>>, Error>,
327+
) -> Vec<Action> {
328+
let response = match &self.capabilities {
329+
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
330+
"Received read event request before capabilities negotiation",
331+
)),
332+
CapabilitiesState::Negotiating => Err(FromWidgetErrorResponse::from_string(
333+
"Received read event request while capabilities were negotiating",
334+
)),
335+
CapabilitiesState::Negotiated(capabilities) => events
336+
.map(|mut events| {
337+
events.retain(|e| capabilities.allow_reading(e));
338+
ReadEventResponse { events }
339+
})
340+
.map_err(FromWidgetErrorResponse::from_error),
341+
};
342+
343+
vec![WidgetMachine::send_from_widget_response(request, response)]
344+
}
345+
319346
fn process_read_event_request(
320347
&mut self,
321348
request: ReadEventRequest,
@@ -343,26 +370,8 @@ impl WidgetMachine {
343370

344371
self.send_matrix_driver_request(request).map(|(request, action)| {
345372
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)]
373+
machine.send_read_message_like_event_response(raw_request, result)
364374
});
365-
366375
action
367376
})
368377
}

0 commit comments

Comments
 (0)