try parse Uri from request if parsed object not provided

This commit is contained in:
yggverse 2025-01-13 03:14:56 +02:00
parent d10987ff4e
commit 23cc695896
2 changed files with 14 additions and 6 deletions

View File

@ -919,14 +919,22 @@ fn is_external_uri(subject: &Uri, base: &Uri) -> bool {
subject.host() != base.host()
}
/// Make new history record for given `navigation` object
/// * applies on shared conditions match only
/// Make new history record in related components
/// * optional [Uri](https://docs.gtk.org/glib/struct.Uri.html) reference wanted only for performance reasons, to not parse it twice
fn snap_history(profile: &Profile, navigation: &Navigation, uri: Option<&Uri>) {
let request = navigation.request.widget.entry.text();
// Add new record into the global memory index (used in global menu)
if let Some(uri) = uri {
profile.history.memory.request.set(uri);
// * if the `Uri` is `None`, try parse it from `request`
match uri {
Some(uri) => profile.history.memory.request.set(uri.clone()),
None => {
// this case especially useful for some routes that contain redirects
// maybe some parental optimization wanted @TODO
if let Some(uri) = navigation.request.uri() {
profile.history.memory.request.set(uri);
}
}
}
// Add new record into the page navigation history

View File

@ -32,12 +32,12 @@ impl Request {
/// Add new record with `request` as key and `unix_timestamp` as value
/// * replace with new value if `request` already exists
pub fn set(&self, uri: &Uri) {
pub fn set(&self, uri: Uri) {
self.index.borrow_mut().insert(
uri.to_str(),
Value {
unix_timestamp: DateTime::now_local().unwrap().to_unix(),
uri: uri.clone(),
uri,
},
);
}