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