Do not add empty tasks to inventory (#8180)

Thorsten Ball and Kirill created

I ran into this when trying out which keybindings work and accidentally
added empty tasks. They get then added to the task inventory and
displayed in the picker.

Release Notes:

- Fixed empty tasks being added to the list of tasks when using `task:
spawn`

---------

Co-authored-by: Kirill <kirill@zed.dev>

Change summary

crates/tasks_ui/src/modal.rs | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)

Detailed changes

crates/tasks_ui/src/modal.rs 🔗

@@ -180,16 +180,21 @@ impl PickerDelegate for TasksModalDelegate {
 
     fn confirm(&mut self, secondary: bool, cx: &mut ViewContext<picker::Picker<Self>>) {
         let current_match_index = self.selected_index();
-        let Some(task) = secondary
-            .then(|| self.spawn_oneshot(cx))
-            .flatten()
-            .or_else(|| {
-                self.matches.get(current_match_index).map(|current_match| {
-                    let ix = current_match.candidate_id;
-                    self.candidates[ix].clone()
-                })
+
+        let task = if secondary {
+            if !self.last_prompt.trim().is_empty() {
+                self.spawn_oneshot(cx)
+            } else {
+                None
+            }
+        } else {
+            self.matches.get(current_match_index).map(|current_match| {
+                let ix = current_match.candidate_id;
+                self.candidates[ix].clone()
             })
-        else {
+        };
+
+        let Some(task) = task else {
             return;
         };