Headerbar: Try to improve the add button behavior.
This commit is contained in:
parent
cc9fc80328
commit
67ab54f820
@ -64,11 +64,15 @@ struct AddPopover {
|
||||
impl AddPopover {
|
||||
// FIXME: THIS ALSO SUCKS!
|
||||
fn on_add_clicked(&self, sender: &Sender<Action>) -> Result<(), Error> {
|
||||
let url = self
|
||||
let mut url = self
|
||||
.entry
|
||||
.get_text()
|
||||
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
||||
|
||||
if !(url.starts_with("https://") || url.starts_with("http://")) {
|
||||
url = format!("http://{}", url);
|
||||
};
|
||||
|
||||
debug!("Url: {}", url);
|
||||
let url = if url.contains("itunes.com") || url.contains("apple.com") {
|
||||
info!("Detected itunes url.");
|
||||
@ -79,8 +83,6 @@ impl AddPopover {
|
||||
url.to_owned()
|
||||
};
|
||||
|
||||
self.entry.set_text("");
|
||||
|
||||
rayon::spawn(clone!(sender => move || {
|
||||
if let Ok(source) = Source::from_url(&url) {
|
||||
refresh(Some(vec![source]), sender.clone());
|
||||
@ -95,15 +97,19 @@ impl AddPopover {
|
||||
|
||||
// FIXME: THIS SUCKS! REFACTOR ME.
|
||||
fn on_entry_changed(&self) -> Result<(), Error> {
|
||||
let uri = self
|
||||
let mut url = self
|
||||
.entry
|
||||
.get_text()
|
||||
.ok_or_else(|| format_err!("GtkEntry blew up somehow."))?;
|
||||
debug!("Url: {}", uri);
|
||||
debug!("Url: {}", url);
|
||||
|
||||
let url = Url::parse(&uri);
|
||||
if !(url.starts_with("https://") || url.starts_with("http://")) {
|
||||
url = format!("http://{}", url);
|
||||
};
|
||||
|
||||
debug!("Url: {}", url);
|
||||
// TODO: refactor to avoid duplication
|
||||
match url {
|
||||
match Url::parse(&url) {
|
||||
Ok(u) => {
|
||||
if !dbqueries::source_exists(u.as_str())? {
|
||||
self.add.set_sensitive(true);
|
||||
@ -111,15 +117,16 @@ impl AddPopover {
|
||||
self.result.set_label("");
|
||||
} else {
|
||||
self.add.set_sensitive(false);
|
||||
self.result.set_label("Show already exists.");
|
||||
self.result
|
||||
.set_label("You are already subscribed to this Show");
|
||||
self.result.show();
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
Err(err) => {
|
||||
self.add.set_sensitive(false);
|
||||
if !uri.is_empty() {
|
||||
self.result.set_label("Invalid url.");
|
||||
if !url.is_empty() {
|
||||
self.result.set_label("Invalid url");
|
||||
self.result.show();
|
||||
error!("Error: {}", err);
|
||||
} else {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user