drop page progress_fraction, use status enum instead

This commit is contained in:
yggverse 2024-09-28 14:04:53 +03:00
parent 5cb5f02308
commit 85629e9dcb
2 changed files with 12 additions and 18 deletions

View File

@ -119,7 +119,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Reload); meta.borrow_mut().status = Some(Status::Reload);
meta.borrow_mut().title = Some(gformat!("Loading..")); meta.borrow_mut().title = Some(gformat!("Loading.."));
meta.borrow_mut().description = None; meta.borrow_mut().description = None;
meta.borrow_mut().progress_fraction = 0.0;
action_update.activate(None); action_update.activate(None);
@ -139,7 +138,7 @@ impl Page {
}; };
// Update // Update
meta.borrow_mut().progress_fraction = 0.25; meta.borrow_mut().status = Some(Status::Prepare);
meta.borrow_mut().description = Some(gformat!("Connect {host}..")); meta.borrow_mut().description = Some(gformat!("Connect {host}.."));
action_update.activate(None); action_update.activate(None);
@ -160,7 +159,7 @@ impl Page {
move |result| match result { move |result| match result {
Ok(connection) => { Ok(connection) => {
// Update // Update
meta.borrow_mut().progress_fraction = 0.50; meta.borrow_mut().status = Some(Status::Connect);
meta.borrow_mut().description = Some(gformat!("Connected to {host}..")); meta.borrow_mut().description = Some(gformat!("Connected to {host}.."));
action_update.activate(None); action_update.activate(None);
@ -173,7 +172,7 @@ impl Page {
move |result| match result { move |result| match result {
Ok(_) => { Ok(_) => {
// Update // Update
meta.borrow_mut().progress_fraction = 0.75; meta.borrow_mut().status = Some(Status::Request);
meta.borrow_mut().description = Some(gformat!("Request data from {host}..")); meta.borrow_mut().description = Some(gformat!("Request data from {host}.."));
action_update.activate(None); action_update.activate(None);
@ -190,7 +189,7 @@ impl Page {
) { ) {
Ok(data) => { Ok(data) => {
// Format response // Format response
meta.borrow_mut().progress_fraction = 1.0; meta.borrow_mut().status = Some(Status::Response);
meta.borrow_mut().description = Some(host); meta.borrow_mut().description = Some(host);
meta.borrow_mut().title = Some(uri.path()); meta.borrow_mut().title = Some(uri.path());
@ -250,10 +249,9 @@ impl Page {
// Redirect (@TODO implement limits to auto-redirect) // Redirect (@TODO implement limits to auto-redirect)
"31" => { "31" => {
// Update meta // Update meta
meta.borrow_mut().mime = Some(Mime::TextGemini);
meta.borrow_mut().status = Some(Status::Redirect); meta.borrow_mut().status = Some(Status::Redirect);
meta.borrow_mut().mime = Some(Mime::TextGemini);
meta.borrow_mut().title = Some(gformat!("Redirect")); meta.borrow_mut().title = Some(gformat!("Redirect"));
meta.borrow_mut().progress_fraction = 1.0;
// Select widget // Select widget
match parts.get(3) { match parts.get(3) {
@ -273,7 +271,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Failure); meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = Some(gformat!("Status {code} not supported")); meta.borrow_mut().description = Some(gformat!("Status {code} not supported"));
meta.borrow_mut().progress_fraction = 1.0;
}, },
} }
None => todo!(), None => todo!(),
@ -286,7 +283,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Failure); meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = Some(gformat!("Failed to read buffer data: {e}")); meta.borrow_mut().description = Some(gformat!("Failed to read buffer data: {e}"));
meta.borrow_mut().progress_fraction = 1.0;
action_update.activate(None); action_update.activate(None);
} }
@ -302,7 +298,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Failure); meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = Some(gformat!("Failed to read response: {:?}", e)); meta.borrow_mut().description = Some(gformat!("Failed to read response: {:?}", e));
meta.borrow_mut().progress_fraction = 1.0;
action_update.activate(None); action_update.activate(None);
@ -319,7 +314,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Failure); meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = Some(gformat!("Failed to read request: {:?}", e)); meta.borrow_mut().description = Some(gformat!("Failed to read request: {:?}", e));
meta.borrow_mut().progress_fraction = 1.0;
action_update.activate(None); action_update.activate(None);
@ -336,7 +330,6 @@ impl Page {
meta.borrow_mut().status = Some(Status::Failure); meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = Some(gformat!("Failed to connect: {:?}", e)); meta.borrow_mut().description = Some(gformat!("Failed to connect: {:?}", e));
meta.borrow_mut().progress_fraction = 1.0;
action_update.activate(None); action_update.activate(None);
} }
@ -348,10 +341,10 @@ impl Page {
*/ */
scheme => { scheme => {
// Update // Update
meta.borrow_mut().status = Some(Status::Failure);
meta.borrow_mut().title = Some(gformat!("Oops")); meta.borrow_mut().title = Some(gformat!("Oops"));
meta.borrow_mut().description = meta.borrow_mut().description =
Some(gformat!("Protocol {scheme} not supported")); Some(gformat!("Protocol {scheme} not supported"));
meta.borrow_mut().progress_fraction = 1.0;
action_update.activate(None); action_update.activate(None);
} }
@ -394,6 +387,8 @@ impl Page {
} }
pub fn update(&self) { pub fn update(&self) {
// Interpret status to progress fraction
// @TODO
self.navigation.update(); self.navigation.update();
// @TODO self.content.update(); // @TODO self.content.update();
} }

View File

@ -10,9 +10,13 @@ pub enum Mime {
// Internal page status (not related with gemini status code) // Internal page status (not related with gemini status code)
// Useful for widgets composition // Useful for widgets composition
pub enum Status { pub enum Status {
Connect,
Failure, Failure,
Prepare,
Redirect, Redirect,
Reload, Reload,
Request,
Response,
Success, Success,
} }
@ -24,10 +28,6 @@ pub struct Meta {
// Enums // Enums
pub mime: Option<Mime>, pub mime: Option<Mime>,
pub status: Option<Status>, pub status: Option<Status>,
// Useful to compose other widgets
// (e.g. navigation bar listen for this value update)
// @TODO deprecated, calculate by Status enum
pub progress_fraction: f32,
} }
impl Meta { impl Meta {
@ -37,7 +37,6 @@ impl Meta {
description: None, description: None,
mime: None, mime: None,
status: None, status: None,
progress_fraction: 0.0,
} }
} }
} }