Skip to content

Commit 8c3f554

Browse files
committed
refactor(widget): reduce indent in a few places thanks to early returns
1 parent 03d9e9b commit 8c3f554

File tree

1 file changed

+97
-103
lines changed
  • crates/matrix-sdk/src/widget/machine

1 file changed

+97
-103
lines changed

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

Lines changed: 97 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -251,31 +251,29 @@ impl WidgetMachine {
251251
let mut actions =
252252
vec![Self::send_from_widget_response(raw_request, Ok(OpenIdResponse::Pending))];
253253

254-
if let Some(request_action) = self.send_matrix_driver_request(RequestOpenId).map(
255-
|(request, request_action)| {
256-
request.then(|res, machine| {
257-
let response = match res {
258-
Ok(res) => {
259-
OpenIdResponse::Allowed(OpenIdState::new(request_id, res))
260-
}
261-
Err(msg) => {
262-
info!("OpenID request failed: {msg}");
263-
OpenIdResponse::Blocked { original_request_id: request_id }
264-
}
265-
};
266-
267-
machine
268-
.send_to_widget_request(NotifyOpenIdChanged(response))
269-
.map(|(_request, action)| vec![action])
270-
.unwrap_or_default()
271-
});
272-
273-
request_action
274-
},
275-
) {
276-
actions.push(request_action);
277-
}
254+
let Some((request, request_action)) =
255+
self.send_matrix_driver_request(RequestOpenId)
256+
else {
257+
// We're done, return early.
258+
return actions;
259+
};
260+
261+
request.then(|res, machine| {
262+
let response = match res {
263+
Ok(res) => OpenIdResponse::Allowed(OpenIdState::new(request_id, res)),
264+
Err(msg) => {
265+
info!("OpenID request failed: {msg}");
266+
OpenIdResponse::Blocked { original_request_id: request_id }
267+
}
268+
};
278269

270+
machine
271+
.send_to_widget_request(NotifyOpenIdChanged(response))
272+
.map(|(_request, action)| vec![action])
273+
.unwrap_or_default()
274+
});
275+
276+
actions.push(request_action);
279277
actions
280278
}
281279

@@ -347,21 +345,21 @@ impl WidgetMachine {
347345
self.send_matrix_driver_request(request).map(|(request, action)| {
348346
request.then(|result, machine| {
349347
let response = match &machine.capabilities {
350-
CapabilitiesState::Unset => Err(FromWidgetErrorResponse::from_string(
351-
"Received read event request before capabilities negotiation",
352-
)),
353-
CapabilitiesState::Negotiating => {
354-
Err(FromWidgetErrorResponse::from_string(
355-
"Received read event request while capabilities were negotiating",
356-
))
357-
}
358-
CapabilitiesState::Negotiated(capabilities) => result
359-
.map(|mut events| {
360-
events.retain(|e| capabilities.raw_event_matches_read_filter(e));
361-
ReadEventResponse { events }
362-
})
363-
.map_err(FromWidgetErrorResponse::from_error),
364-
};
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.raw_event_matches_read_filter(e));
359+
ReadEventResponse { events }
360+
})
361+
.map_err(FromWidgetErrorResponse::from_error),
362+
};
365363

366364
vec![Self::send_from_widget_response(raw_request, response)]
367365
});
@@ -390,16 +388,16 @@ impl WidgetMachine {
390388
};
391389

392390
if allowed {
393-
let request = ReadStateEventRequest { event_type, state_key };
394-
self.send_matrix_driver_request(request).map(|(request, action)| {
395-
request.then(|result, _machine| {
396-
let response = result
397-
.map(|events| ReadEventResponse { events })
398-
.map_err(FromWidgetErrorResponse::from_error);
399-
vec![Self::send_from_widget_response(raw_request, response)]
400-
});
401-
action
402-
})
391+
self.send_matrix_driver_request(ReadStateEventRequest { event_type, state_key })
392+
.map(|(request, action)| {
393+
request.then(|result, _machine| {
394+
let response = result
395+
.map(|events| ReadEventResponse { events })
396+
.map_err(FromWidgetErrorResponse::from_error);
397+
vec![Self::send_from_widget_response(raw_request, response)]
398+
});
399+
action
400+
})
403401
} else {
404402
Some(Self::send_from_widget_error_string_response(
405403
raw_request,
@@ -445,19 +443,19 @@ impl WidgetMachine {
445443
));
446444
}
447445

448-
self.send_matrix_driver_request(request).map(|(request, action)| {
449-
request.then(|mut result, machine| {
450-
if let Ok(r) = result.as_mut() {
451-
r.set_room_id(machine.room_id.clone());
452-
}
453-
vec![Self::send_from_widget_response(
454-
raw_request,
455-
result.map_err(FromWidgetErrorResponse::from_error),
456-
)]
457-
});
446+
let (request, action) = self.send_matrix_driver_request(request)?;
447+
448+
request.then(|mut result, machine| {
449+
if let Ok(r) = result.as_mut() {
450+
r.set_room_id(machine.room_id.clone());
451+
}
452+
vec![Self::send_from_widget_response(
453+
raw_request,
454+
result.map_err(FromWidgetErrorResponse::from_error),
455+
)]
456+
});
458457

459-
action
460-
})
458+
Some(action)
461459
}
462460

463461
#[instrument(skip_all, fields(?request_id))]
@@ -624,57 +622,53 @@ impl WidgetMachine {
624622

625623
self.capabilities = CapabilitiesState::Negotiating;
626624

627-
if let Some(action) =
628-
self.send_to_widget_request(RequestCapabilities {}).map(|(request, action)| {
629-
request.then(|response, machine| {
630-
let requested_capabilities = response.capabilities;
625+
let Some((request, action)) = self.send_to_widget_request(RequestCapabilities {}) else {
626+
// We're done, return early.
627+
return actions;
628+
};
631629

632-
if let Some((request, action)) =
633-
machine.send_matrix_driver_request(AcquireCapabilities {
634-
desired_capabilities: requested_capabilities.clone(),
635-
})
636-
{
637-
request.then(|result, machine| {
638-
let approved_capabilities = result.unwrap_or_else(|e| {
639-
error!("Acquiring capabilities failed: {e}");
640-
Capabilities::default()
641-
});
630+
request.then(|response, machine| {
631+
let requested_capabilities = response.capabilities;
642632

643-
let mut actions = Vec::new();
644-
if !approved_capabilities.read.is_empty() {
645-
actions.push(Action::Subscribe);
646-
}
633+
let Some((request, action)) = machine.send_matrix_driver_request(AcquireCapabilities {
634+
desired_capabilities: requested_capabilities.clone(),
635+
}) else {
636+
// We're done, return early.
637+
return Vec::new();
638+
};
639+
640+
request.then(|result, machine| {
641+
let approved_capabilities = result.unwrap_or_else(|e| {
642+
error!("Acquiring capabilities failed: {e}");
643+
Capabilities::default()
644+
});
647645

648-
machine.capabilities =
649-
CapabilitiesState::Negotiated(approved_capabilities.clone());
646+
let mut actions = Vec::new();
647+
if !approved_capabilities.read.is_empty() {
648+
actions.push(Action::Subscribe);
649+
}
650650

651-
let notify_caps_changed = NotifyCapabilitiesChanged {
652-
approved: approved_capabilities,
653-
requested: requested_capabilities,
654-
};
651+
machine.capabilities = CapabilitiesState::Negotiated(approved_capabilities.clone());
655652

656-
if let Some(action) = machine
657-
.send_to_widget_request(notify_caps_changed)
658-
.map(|(_request, action)| action)
659-
{
660-
actions.push(action);
661-
}
653+
let notify_caps_changed = NotifyCapabilitiesChanged {
654+
approved: approved_capabilities,
655+
requested: requested_capabilities,
656+
};
662657

663-
actions
664-
});
658+
if let Some(action) = machine
659+
.send_to_widget_request(notify_caps_changed)
660+
.map(|(_request, action)| action)
661+
{
662+
actions.push(action);
663+
}
665664

666-
vec![action]
667-
} else {
668-
Vec::new()
669-
}
670-
});
665+
actions
666+
});
671667

672-
action
673-
})
674-
{
675-
actions.push(action);
676-
}
668+
vec![action]
669+
});
677670

671+
actions.push(action);
678672
actions
679673
}
680674
}

0 commit comments

Comments
 (0)