diff --git a/src/app.rs b/src/app.rs index fe7404b..cc1420b 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2678,10 +2678,14 @@ impl Application for App { }) && let Some(mounter) = MOUNTERS.get(&key) { - return mounter.network_drive(uri.clone()).map(move |()| { - cosmic::Action::App(Message::NetworkDriveOpenEntityAfterMount { - entity, - }) + return mounter.network_drive(uri.clone()).map(move |mounted| { + if mounted { + cosmic::Action::App(Message::NetworkDriveOpenEntityAfterMount { + entity, + }) + } else { + cosmic::action::none() + } }); } @@ -3586,7 +3590,7 @@ impl Application for App { Some((*mounter_key, self.network_drive_input.clone())); return mounter .network_drive(self.network_drive_input.clone()) - .map(|()| cosmic::action::none()); + .map(|_| cosmic::action::none()); } log::warn!( "no mounter found for connecting to {:?}", diff --git a/src/mounter/gvfs.rs b/src/mounter/gvfs.rs index e2c6ba1..1b7af76 100644 --- a/src/mounter/gvfs.rs +++ b/src/mounter/gvfs.rs @@ -659,7 +659,7 @@ impl Mounter for Gvfs { ) } - fn network_drive(&self, uri: String) -> Task<()> { + fn network_drive(&self, uri: String) -> Task { let command_tx = self.command_tx.clone(); Task::perform( async move { @@ -668,9 +668,15 @@ impl Mounter for Gvfs { command_tx.send(Cmd::NetworkDrive(uri, res_tx)).unwrap(); res_rx.await }, - |x| { - if let Err(err) = x { + |result| match result { + Ok(Ok(())) => true, + Ok(Err(err)) => { log::error!("{err:?}"); + false + } + Err(err) => { + log::error!("{err:?}"); + false } }, ) diff --git a/src/mounter/mod.rs b/src/mounter/mod.rs index 3171c0f..81731fa 100644 --- a/src/mounter/mod.rs +++ b/src/mounter/mod.rs @@ -114,7 +114,7 @@ pub trait Mounter: Send + Sync { fn items(&self, sizes: IconSizes) -> Option; //TODO: send result fn mount(&self, item: MounterItem) -> Task<()>; - fn network_drive(&self, uri: String) -> Task<()>; + fn network_drive(&self, uri: String) -> Task; fn network_scan(&self, uri: &str, sizes: IconSizes) -> Option, String>>; fn dir_info(&self, uri: &str) -> Option<(String, String, Option)>; fn unmount(&self, item: MounterItem) -> Task<()>;