refactor: upgrade tauri 2.0

This commit is contained in:
Kevin Yue
2024-12-26 21:35:55 +08:00
parent 0f67be465b
commit 8f8ad466f4
73 changed files with 7232 additions and 5026 deletions

View File

@@ -14,10 +14,13 @@ pub struct SamlAuthLauncher<'a> {
user_agent: Option<&'a str>,
os: Option<&'a str>,
os_version: Option<&'a str>,
hidpi: bool,
fix_openssl: bool,
ignore_tls_errors: bool,
#[cfg(feature = "webview-auth")]
hidpi: bool,
#[cfg(feature = "webview-auth")]
clean: bool,
#[cfg(feature = "webview-auth")]
default_browser: bool,
browser: Option<&'a str>,
}
@@ -31,10 +34,13 @@ impl<'a> SamlAuthLauncher<'a> {
user_agent: None,
os: None,
os_version: None,
hidpi: false,
fix_openssl: false,
ignore_tls_errors: false,
#[cfg(feature = "webview-auth")]
hidpi: false,
#[cfg(feature = "webview-auth")]
clean: false,
#[cfg(feature = "webview-auth")]
default_browser: false,
browser: None,
}
@@ -65,11 +71,6 @@ impl<'a> SamlAuthLauncher<'a> {
self
}
pub fn hidpi(mut self, hidpi: bool) -> Self {
self.hidpi = hidpi;
self
}
pub fn fix_openssl(mut self, fix_openssl: bool) -> Self {
self.fix_openssl = fix_openssl;
self
@@ -80,11 +81,19 @@ impl<'a> SamlAuthLauncher<'a> {
self
}
#[cfg(feature = "webview-auth")]
pub fn hidpi(mut self, hidpi: bool) -> Self {
self.hidpi = hidpi;
self
}
#[cfg(feature = "webview-auth")]
pub fn clean(mut self, clean: bool) -> Self {
self.clean = clean;
self
}
#[cfg(feature = "webview-auth")]
pub fn default_browser(mut self, default_browser: bool) -> Self {
self.default_browser = default_browser;
self
@@ -120,10 +129,6 @@ impl<'a> SamlAuthLauncher<'a> {
auth_cmd.arg("--os-version").arg(os_version);
}
if self.hidpi {
auth_cmd.arg("--hidpi");
}
if self.fix_openssl {
auth_cmd.arg("--fix-openssl");
}
@@ -132,12 +137,19 @@ impl<'a> SamlAuthLauncher<'a> {
auth_cmd.arg("--ignore-tls-errors");
}
if self.clean {
auth_cmd.arg("--clean");
}
#[cfg(feature = "webview-auth")]
{
if self.hidpi {
auth_cmd.arg("--hidpi");
}
if self.default_browser {
auth_cmd.arg("--default-browser");
if self.clean {
auth_cmd.arg("--clean");
}
if self.default_browser {
auth_cmd.arg("--default-browser");
}
}
if let Some(browser) = self.browser {

View File

@@ -1,77 +0,0 @@
use std::{borrow::Cow, env::temp_dir, fs, io::Write, os::unix::fs::PermissionsExt};
use anyhow::bail;
use log::{info, warn};
pub struct BrowserAuthenticator<'a> {
auth_request: &'a str,
browser: Option<&'a str>,
}
impl BrowserAuthenticator<'_> {
pub fn new(auth_request: &str) -> BrowserAuthenticator {
BrowserAuthenticator {
auth_request,
browser: None,
}
}
pub fn new_with_browser<'a>(auth_request: &'a str, browser: &'a str) -> BrowserAuthenticator<'a> {
let browser = browser.trim();
BrowserAuthenticator {
auth_request,
browser: if browser.is_empty() || browser == "default" {
None
} else {
Some(browser)
},
}
}
pub fn authenticate(&self) -> anyhow::Result<()> {
let path = if self.auth_request.starts_with("http") {
Cow::Borrowed(self.auth_request)
} else {
let html_file = temp_dir().join("gpauth.html");
// Remove the file and error if permission denied
if let Err(err) = fs::remove_file(&html_file) {
if err.kind() != std::io::ErrorKind::NotFound {
warn!("Failed to remove the temporary file: {}", err);
bail!("Please remove the file manually: {:?}", html_file);
}
}
let mut file = fs::File::create(&html_file)?;
file.set_permissions(fs::Permissions::from_mode(0o600))?;
file.write_all(self.auth_request.as_bytes())?;
Cow::Owned(html_file.to_string_lossy().to_string())
};
if let Some(browser) = self.browser {
let app = find_browser_path(browser);
info!("Launching browser: {}", app);
open::with_detached(path.as_ref(), app)?;
} else {
info!("Launching the default browser...");
webbrowser::open(path.as_ref())?;
}
Ok(())
}
}
fn find_browser_path(browser: &str) -> String {
if browser == "chrome" {
which::which("google-chrome-stable")
.or_else(|_| which::which("google-chrome"))
.or_else(|_| which::which("chromium"))
.map(|path| path.to_string_lossy().to_string())
.unwrap_or_else(|_| browser.to_string())
} else {
browser.into()
}
}

View File

@@ -2,8 +2,6 @@ pub(crate) mod command_traits;
pub(crate) mod gui_helper_launcher;
pub mod auth_launcher;
#[cfg(feature = "browser-auth")]
pub mod browser_authenticator;
pub mod gui_launcher;
pub mod hip_launcher;
pub mod service_launcher;