Fixes issue #20 (https://todo.sr.ht/~julienxx/Castor/20)
Throws an error dialog if URL is invalid before adding to bookmarks
---
src/bookmarks.rs | 8 ++++++++
src/main.rs | 5 ++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/bookmarks.rs b/src/bookmarks.rs
index 3a5b8ea..6ae6a96 100644
--- a/src/bookmarks.rs
+++ b/src/bookmarks.rs
@@ -4,6 +4,14 @@ use std::fs;
use std::fs::File;
use std::fs::OpenOptions;
use std::io::{Read, Write};
+use url::Url;
+
+pub fn is_valid(url: &str) -> bool {
+ match Url::parse(&url) {
+ Ok(_) => true,
+ _ => false,
+ }
+}
pub fn add(url: &str) {
let mut file = bookmarks_file();
diff --git a/src/main.rs b/src/main.rs
index 240a3d6..4fbff8f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -161,10 +161,13 @@ fn add_bookmark(gui: &Arc<Gui>) {
let current_url = url_bar.get_text();
if let Some(url) = current_url {
- if url != "" {
+ if bookmarks::is_valid(&url) {
bookmarks::add(&url);
dialog::info(&gui, "Bookmark added.");
}
+ else {
+ dialog::error(&gui, "Invalid bookmark URL.");
+ }
}
}
--
2.20.1