group self members into Self struct

This commit is contained in:
yggverse 2025-03-27 20:43:00 +02:00
parent e3477d2056
commit 6142d8e68a

View file

@ -98,27 +98,26 @@ impl Gemini {
use ggemini::client::connection::request::{Mode, Request}; use ggemini::client::connection::request::{Mode, Request};
match uri.scheme().as_str() { match uri.scheme().as_str() {
"gemini" => handle( "gemini" => handle(
self,
Request::Gemini { Request::Gemini {
uri, uri,
mode: Mode::HeaderOnly, mode: Mode::HeaderOnly,
}, },
(
self.client.clone(),
self.page.clone(),
self.redirects.clone(),
feature, feature,
),
cancellable, cancellable,
None, None,
is_snap_history, is_snap_history,
), ),
"titan" => { "titan" => {
self.page.input.set_new_titan({ self.page.input.set_new_titan({
let client = self.client.clone(); let this = Self {
let page = self.page.clone(); client: self.client.clone(),
let redirects = self.redirects.clone(); page: self.page.clone(),
redirects: self.redirects.clone(),
};
move |header, bytes, on_failure| { move |header, bytes, on_failure| {
handle( handle(
&this,
Request::Titan { Request::Titan {
uri: uri.clone(), uri: uri.clone(),
data: bytes, data: bytes,
@ -126,12 +125,7 @@ impl Gemini {
token: header.token.map(|token| token.into()), token: header.token.map(|token| token.into()),
mode: Mode::HeaderOnly, mode: Mode::HeaderOnly,
}, },
(
client.clone(),
page.clone(),
redirects.clone(),
feature.clone(), feature.clone(),
),
cancellable.clone(), cancellable.clone(),
Some(on_failure), Some(on_failure),
is_snap_history, is_snap_history,
@ -147,21 +141,22 @@ impl Gemini {
} }
fn handle( fn handle(
this: &Gemini,
request: Request, request: Request,
(client, page, redirects, feature): (Rc<Client>, Rc<Page>, Rc<Cell<usize>>, Rc<Feature>), feature: Rc<Feature>,
cancellable: Cancellable, cancellable: Cancellable,
on_failure: Option<Box<dyn Fn()>>, on_failure: Option<Box<dyn Fn()>>,
is_snap_history: bool, is_snap_history: bool,
) { ) {
const EVENT_COMPLETED: &str = "Completed"; const EVENT_COMPLETED: &str = "Completed";
let uri = request.uri().clone(); let uri = request.uri().clone();
client.request_async( this.client.request_async(
request, request,
Priority::DEFAULT, Priority::DEFAULT,
cancellable.clone(), cancellable.clone(),
// Search for user certificate match request // Search for user certificate match request
// * @TODO this feature does not support multi-protocol yet // * @TODO this feature does not support multi-protocol yet
match page match this.page
.profile .profile
.identity .identity
.get(&uri.to_string()) .get(&uri.to_string())
@ -173,8 +168,8 @@ fn handle(
None => None, None => None,
}, },
{ {
let page = page.clone(); let page = this.page.clone();
let redirects = redirects.clone(); let redirects = this.redirects.clone();
move |result| match result { move |result| match result {
Ok((response, connection)) => { Ok((response, connection)) => {
/// Common page info pattern for some cases in the current scope /// Common page info pattern for some cases in the current scope