Skip to content

Commit a3b69c8

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

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;
@@ -234,7 +235,7 @@ impl WidgetMachine {
234235
Err(e) => {
235236
return vec![Self::send_from_widget_err_response(
236237
raw_request,
237-
FromWidgetErrorResponse::from_error(crate::Error::SerdeJson(e)),
238+
FromWidgetErrorResponse::from_error(Error::SerdeJson(e)),
238239
)]
239240
}
240241
};
@@ -338,6 +339,33 @@ impl WidgetMachine {
338339
}
339340
}
340341

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

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

0 commit comments

Comments
 (0)