diff options
Diffstat (limited to 'pkgs/by-name/ts/tskm/src/browser')
| -rw-r--r-- | pkgs/by-name/ts/tskm/src/browser/mod.rs | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/pkgs/by-name/ts/tskm/src/browser/mod.rs b/pkgs/by-name/ts/tskm/src/browser/mod.rs index 2129982f..fd90b820 100644 --- a/pkgs/by-name/ts/tskm/src/browser/mod.rs +++ b/pkgs/by-name/ts/tskm/src/browser/mod.rs @@ -14,7 +14,7 @@ use url::Url; use crate::{state::State, task}; #[allow(clippy::too_many_lines)] -pub fn open_in_browser<U>( +pub async fn open_in_browser<U>( selected_project: &task::Project, state: &mut State, urls: Option<Vec<U>>, @@ -24,8 +24,9 @@ where { let old_project: Option<task::Project> = task::Project::get_current().context("Failed to get currently active project")?; - let old_task: Option<task::Task> = - task::Task::get_current(state).context("Failed to get currently active task")?; + let old_task: Option<task::Task> = task::Task::get_current(state) + .await + .context("Failed to get currently active task")?; selected_project.activate().with_context(|| { format!( @@ -35,25 +36,36 @@ where })?; let tracking_task = { - let all_tasks = selected_project.get_tasks(state).with_context(|| { + let all_tasks = selected_project.get_tasks(state).await.with_context(|| { format!( "Failed to get assoctiated tasks for project: '{}'", selected_project.to_project_display() ) })?; - let tracking_task = all_tasks.into_iter().find(|t| { - let maybe_desc = t.description(state); - if let Ok(desc) = maybe_desc { - desc == "tracking" - } else { - error!( - "Getting task description returned error: {}", - maybe_desc.expect_err("We already check for Ok") - ); - false + let tracking_task = { + let mut output = None; + + for t in all_tasks { + let maybe_desc = t.description(state).await; + let found = if let Ok(desc) = maybe_desc { + desc == "tracking" + } else { + error!( + "Getting task description returned error: {}", + maybe_desc.expect_err("We already check for Ok") + ); + false + }; + + if found { + output = Some(t); + break; + } } - }); + + output + }; if let Some(task) = tracking_task { info!( @@ -61,6 +73,7 @@ where selected_project.to_project_display() ); task.start(state) + .await .with_context(|| format!("Failed to start task {task}"))?; } tracking_task @@ -180,10 +193,12 @@ where if let Some(task) = tracking_task { task.stop(state) + .await .with_context(|| format!("Failed to stop task {task}"))?; } if let Some(task) = old_task { task.start(state) + .await .with_context(|| format!("Failed to start task {task}"))?; } |
