Git Beta: Fix a few cases of empty toasts showing up (#25985)

Mikayla Maki created

Improve parsing of git remote outputs

Release Notes:

- N/A

Change summary

crates/git_ui/src/remote_output_toast.rs | 41 +++++++++++++++++--------
1 file changed, 27 insertions(+), 14 deletions(-)

Detailed changes

crates/git_ui/src/remote_output_toast.rs 🔗

@@ -71,7 +71,7 @@ impl RemoteOutputToast {
             }
         });
 
-        let message;
+        let mut message: SharedString;
         let remote;
 
         match action {
@@ -86,19 +86,32 @@ impl RemoteOutputToast {
 
             RemoteAction::Push(remote_ref) => {
                 message = output.stdout.trim().to_string().into();
-                let remote_message = get_remote_lines(&output.stderr);
-                let finder = LinkFinder::new();
-                let links = finder
-                    .links(&remote_message)
-                    .filter(|link| *link.kind() == LinkKind::Url)
-                    .map(|link| link.start()..link.end())
-                    .collect_vec();
-
-                remote = Some(InfoFromRemote {
-                    name: remote_ref.name,
-                    remote_text: remote_message.into(),
-                    links,
-                });
+                if message.is_empty() {
+                    message = output.stderr.trim().to_string().into();
+                    if message.is_empty() {
+                        message = "Push Successful".into();
+                    }
+                    remote = None;
+                } else {
+                    let remote_message = get_remote_lines(&output.stderr);
+
+                    remote = if remote_message.is_empty() {
+                        None
+                    } else {
+                        let finder = LinkFinder::new();
+                        let links = finder
+                            .links(&remote_message)
+                            .filter(|link| *link.kind() == LinkKind::Url)
+                            .map(|link| link.start()..link.end())
+                            .collect_vec();
+
+                        Some(InfoFromRemote {
+                            name: remote_ref.name,
+                            remote_text: remote_message.into(),
+                            links,
+                        })
+                    }
+                }
             }
         }