update page meta on Titan input request

This commit is contained in:
yggverse 2025-01-22 18:31:10 +02:00
parent 6e6c038593
commit 8534e5c510

View File

@ -87,47 +87,59 @@ impl Gemini {
feature, feature,
cancellable, cancellable,
), ),
"titan" => self.subject.page.input.set_new_titan({ "titan" => {
let client = self.client.clone(); self.subject.page.input.set_new_titan({
let subject = self.subject.clone(); let client = self.client.clone();
let redirects = self.redirects.clone(); let subject = self.subject.clone();
move |data, _label| { let redirects = self.redirects.clone();
handle( move |data, _label| {
Request::Titan(Titan { handle(
uri: uri.clone(), Request::Titan(Titan {
data: Bytes::from(data), uri: uri.clone(),
mime: None, // @TODO data: Bytes::from(data),
token: None, // @TODO mime: None, // @TODO
}), token: None, // @TODO
client.clone(), }),
subject.clone(), client.clone(),
redirects.clone(), subject.clone(),
feature.clone(), redirects.clone(),
cancellable.clone(), feature.clone(),
) cancellable.clone(),
// init data to send )
/* @TODO // init data to send
use crate::tool::format_bytes; /* @TODO
use plurify::ns as plural; use crate::tool::format_bytes;
use plurify::ns as plural;
const CHUNK: usize = 0x400; const CHUNK: usize = 0x400;
let bytes_sent = 0; let bytes_sent = 0;
let bytes_total = data.len(); let bytes_total = data.len();
// send by chunks for large content size // send by chunks for large content size
if bytes_total > CHUNK { if bytes_total > CHUNK {
label.set_label(&format!( label.set_label(&format!(
"sent {}/{} {}", "sent {}/{} {}",
format_bytes(bytes_sent), format_bytes(bytes_sent),
format_bytes(bytes_total), format_bytes(bytes_total),
plural(bytes_sent, &["byte", "bytes", "bytes"]) plural(bytes_sent, &["byte", "bytes", "bytes"])
)); ));
} else { } else {
label.set_visible(false); label.set_visible(false);
}
todo!()*/
} }
todo!()*/ });
}
}), self.subject.page.title.replace("Titan input".into());
self.subject
.page
.navigation
.request
.widget
.entry
.set_progress_fraction(0.0);
self.subject.tab_page.set_loading(false);
}
_ => panic!(), // unexpected _ => panic!(), // unexpected
} }
} }
@ -164,7 +176,7 @@ fn handle(
{ {
let subject = subject.clone(); let subject = subject.clone();
let redirects = redirects.clone(); let redirects = redirects.clone();
move |result| match result { move |result| match result {
Ok(response) => { Ok(response) => {
match response.meta.status { match response.meta.status {
// https://geminiprotocol.net/docs/protocol-specification.gmi#input-expected // https://geminiprotocol.net/docs/protocol-specification.gmi#input-expected