group entities

This commit is contained in:
yggverse 2025-01-23 20:47:20 +02:00
parent f495453c84
commit 10c73f4e3d

View File

@ -198,9 +198,9 @@ fn handle(
Some(1024), Some(1024),
); );
} }
subject.tab_page.set_title(&title);
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&title);
redirects.replace(0); // reset redirects.replace(0); // reset
} }
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-20 // https://geminiprotocol.net/docs/protocol-specification.gmi#status-20
@ -270,9 +270,9 @@ fn handle(
} }
}, },
); );
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
_ => match response.meta.mime { _ => match response.meta.mime {
@ -288,33 +288,25 @@ fn handle(
} else { } else {
subject.page.content.to_text_gemini(&uri, &text.to_string()) subject.page.content.to_text_gemini(&uri, &text.to_string())
}; };
// Connect `TextView` widget, update `search` model
subject.page.search.set(Some(widget.text_view)); subject.page.search.set(Some(widget.text_view));
// Update page meta
subject.tab_page.set_title(&match widget.meta.title { subject.tab_page.set_title(&match widget.meta.title {
Some(title) => title.into(), // @TODO Some(title) => title.into(), // @TODO
None => uri_to_title(&uri), None => uri_to_title(&uri),
}); });
// Deactivate loading indication
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
redirects.replace(0); // reset
// Update window components
subject.page.window_action subject.page.window_action
.find .find
.simple_action .simple_action
.set_enabled(true); .set_enabled(true);
redirects.replace(0); // reset
} }
Err(e) => { Err(e) => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string())); status.set_description(Some(&e.to_string()));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
}, },
@ -365,10 +357,9 @@ fn handle(
Err(e) => { Err(e) => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string())); status.set_description(Some(&e.to_string()));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
} }
} }
@ -380,18 +371,18 @@ fn handle(
.content .content
.to_status_mime(mime, Some((&subject.page.tab_action, &uri))); .to_status_mime(mime, Some((&subject.page.tab_action, &uri)));
status.set_description(Some(&format!("Content type `{mime}` yet not supported"))); status.set_description(Some(&format!("Content type `{mime}` yet not supported")));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
}, },
None => { None => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some("MIME type not found")); status.set_description(Some("MIME type not found"));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
} }
@ -427,9 +418,9 @@ fn handle(
if total > 5 { if total > 5 {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some("Redirection limit reached")); status.set_description(Some("Redirection limit reached"));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
// Disallow external redirection by protocol restrictions // Disallow external redirection by protocol restrictions
@ -438,9 +429,9 @@ fn handle(
|| uri.host() != target.host() { || uri.host() != target.host() {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some("External redirects not allowed by protocol specification")); status.set_description(Some("External redirects not allowed by protocol specification"));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
// Valid // Valid
} else { } else {
@ -458,18 +449,18 @@ fn handle(
Err(e) => { Err(e) => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string())); status.set_description(Some(&e.to_string()));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
} }
} }
None => { None => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some("Redirection target not found")); status.set_description(Some("Redirection target not found"));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
} }
} }
@ -486,17 +477,17 @@ fn handle(
None => response.meta.status.to_string(), None => response.meta.status.to_string(),
})); }));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
} }
status => { status => {
let _status = subject.page.content.to_status_failure(); let _status = subject.page.content.to_status_failure();
_status.set_description(Some(&format!("Undefined status code `{status}`"))); _status.set_description(Some(&format!("Undefined status code `{status}`")));
subject.tab_page.set_title(&_status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&_status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
}, },
} }
@ -504,9 +495,9 @@ fn handle(
Err(e) => { Err(e) => {
let status = subject.page.content.to_status_failure(); let status = subject.page.content.to_status_failure();
status.set_description(Some(&e.to_string())); status.set_description(Some(&e.to_string()));
subject.tab_page.set_title(&status.title());
subject.page.navigation.request.widget.entry.set_progress_fraction(0.0); subject.page.navigation.request.widget.entry.set_progress_fraction(0.0);
subject.tab_page.set_loading(false); subject.tab_page.set_loading(false);
subject.tab_page.set_title(&status.title());
redirects.replace(0); // reset redirects.replace(0); // reset
} }
} }