diff --git a/Cargo.toml b/Cargo.toml index e50908e..028fb3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ derive_more = "0.99" # for DNS from hermes # Optional dependencies regulated by features web-view = { version = "0.7", features = [], optional = true } tinyfiledialogs = { version = "3.3.10", optional = true } +open = { version = "1.6.0", optional = true } [target.'cfg(windows)'.dependencies] winapi = { version = "0.3.7", features = ["impl-default", "wincon", "shellscalingapi"]} @@ -60,6 +61,6 @@ ProductName="ALFIS" FileDescription="Alternative Free Identity System" [features] -webgui = ["web-view", "tinyfiledialogs"] +webgui = ["web-view", "tinyfiledialogs", "open"] edge = ["web-view/edge"] default = ["webgui"] \ No newline at end of file diff --git a/src/web_ui.rs b/src/web_ui.rs index 360de98..39f79bd 100644 --- a/src/web_ui.rs +++ b/src/web_ui.rs @@ -2,6 +2,7 @@ extern crate web_view; extern crate tinyfiledialogs as tfd; extern crate serde; extern crate serde_json; +extern crate open; use std::sync::{Arc, Mutex}; use std::thread; @@ -57,6 +58,11 @@ pub fn run_interface(context: Arc>, miner: Arc>) { CheckZone { name } => { action_check_zone(&context, web_view, name); } MineZone { name, data } => { action_create_zone(Arc::clone(&context), Arc::clone(&miner), web_view, name, data); } StopMining => { context.lock().unwrap().bus.post(Event::ActionStopMining); } + Open { link } => { + if open::that(&link).is_err() { + show_warning(web_view, "Something wrong, I can't open the link 😢"); + } + } } Ok(()) }) @@ -468,6 +474,7 @@ pub enum Cmd { MineDomain { name: String, records: String }, TransferDomain { name: String, owner: String }, StopMining, + Open { link: String }, } struct Status { diff --git a/src/webview/index.html b/src/webview/index.html index 59bcf02..88e2b85 100644 --- a/src/webview/index.html +++ b/src/webview/index.html @@ -147,9 +147,17 @@