rename page Request to Mode

This commit is contained in:
yggverse 2025-01-14 20:08:49 +02:00
parent 10c415063a
commit 557ad69edf
2 changed files with 20 additions and 17 deletions

View File

@ -4,8 +4,8 @@ mod database;
mod error; mod error;
mod input; mod input;
mod meta; mod meta;
mod mode;
mod navigation; mod navigation;
mod request;
mod search; mod search;
mod widget; mod widget;
@ -14,16 +14,18 @@ use content::Content;
use error::Error; use error::Error;
use input::Input; use input::Input;
use meta::{Meta, Status}; use meta::{Meta, Status};
use mode::Mode;
use navigation::Navigation; use navigation::Navigation;
use request::Request;
use search::Search; use search::Search;
use widget::Widget; use widget::Widget;
use crate::app::browser::{ use crate::{
window::{tab::item::Action as TabAction, Action as WindowAction}, app::browser::{
Action as BrowserAction, window::{tab::item::Action as TabAction, Action as WindowAction},
Action as BrowserAction,
},
Profile,
}; };
use crate::Profile;
use gtk::{ use gtk::{
gdk::Texture, gdk::Texture,
gdk_pixbuf::Pixbuf, gdk_pixbuf::Pixbuf,
@ -194,6 +196,7 @@ impl Page {
// Try redirect request // Try redirect request
let request = if let Some(redirect) = self.meta.redirect() { let request = if let Some(redirect) = self.meta.redirect() {
// Gemini protocol may provide background (temporarily) redirects
if redirect.is_foreground { if redirect.is_foreground {
self.navigation self.navigation
.request .request
@ -203,30 +206,30 @@ impl Page {
} }
// Return value from redirection holder // Return value from redirection holder
Request::from(&redirect.request, redirect.referrer.as_ref()) Mode::from(&redirect.request, redirect.referrer.as_ref())
} else { } else {
// Reset redirect counter as request value taken from user input // Reset redirect counter as request value taken from user input
self.meta.redirect.borrow_mut().clear(); self.meta.redirect.borrow_mut().clear();
// Return value from navigation entry // Return value from navigation entry
Request::from(&self.navigation.request.widget.entry.text(), None) Mode::from(&self.navigation.request.widget.entry.text(), None)
}; };
// Update // Update
self.meta.set_status(Status::Reload).set_title("Loading.."); self.meta.set_status(Status::Reload).set_title("Loading..");
self.browser_action.update.activate(Some(&self.id)); self.browser_action.update.activate(Some(&self.id));
// Route by request // Route by `Mode`
match request { match request {
Request::Default(ref uri) | Request::Download(ref uri) | Request::Source(ref uri) => { Mode::Default(ref uri) | Mode::Download(ref uri) | Mode::Source(ref uri) => {
// Route by scheme // Route by scheme
match uri.scheme().as_str() { match uri.scheme().as_str() {
"file" => todo!(), "file" => todo!(),
"gemini" => { "gemini" => {
let (uri, is_download, is_source) = match request { let (uri, is_download, is_source) = match request {
Request::Default(uri) => (uri, false, false), Mode::Default(uri) => (uri, false, false),
Request::Download(uri) => (uri, true, false), Mode::Download(uri) => (uri, true, false),
Request::Source(uri) => (uri, false, true), Mode::Source(uri) => (uri, false, true),
_ => panic!(), _ => panic!(),
}; };
self.load_gemini(uri, is_download, is_source, is_history) self.load_gemini(uri, is_download, is_source, is_history)
@ -265,7 +268,7 @@ impl Page {
} }
} }
} }
Request::Search(query) => { Mode::Search(query) => {
// try autocomplete scheme and request it on successful resolve // try autocomplete scheme and request it on successful resolve
// otherwise make search request @TODO optional search provider // otherwise make search request @TODO optional search provider
self.navigation self.navigation

View File

@ -1,14 +1,14 @@
use gtk::glib::{GString, Uri, UriFlags}; use gtk::glib::{GString, Uri, UriFlags};
/// Request type for `Page` with optional value parsed /// Page type for `Page` with optional value parsed
pub enum Request { pub enum Mode {
Default(Uri), Default(Uri),
Download(Uri), Download(Uri),
Source(Uri), Source(Uri),
Search(String), Search(String),
} }
impl Request { impl Mode {
// Constructors // Constructors
/// Create new `Self` from `request` string /// Create new `Self` from `request` string