summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-03-20 08:52:21 +0100
committerStefan Haller <stefan@haller-berlin.de>2024-03-22 08:17:12 +0100
commite8db27b0b32b7f7f9ecd98bf1af6023dae2b234d (patch)
tree219909e0e260d3eb1a11853cd40158615a4e2263
parent337a0dbc9b3a6fb1acae71732735d07356341d91 (diff)
When creating a new remote, select it and fetch it
I'm doing these two things every time I add a new remote, in 100% of the cases, so do them automatically for me.
-rw-r--r--pkg/gui/controllers/remotes_controller.go22
1 files changed, 21 insertions, 1 deletions
diff --git a/pkg/gui/controllers/remotes_controller.go b/pkg/gui/controllers/remotes_controller.go
index 37c1273ed..f15bc1146 100644
--- a/pkg/gui/controllers/remotes_controller.go
+++ b/pkg/gui/controllers/remotes_controller.go
@@ -145,7 +145,27 @@ func (self *RemotesController) add() error {
if err := self.c.Git().Remote.AddRemote(remoteName, remoteUrl); err != nil {
return err
}
- return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.REMOTES}})
+
+ // Do a sync refresh of the remotes so that we can select
+ // the new one. Loading remotes is not expensive, so we can
+ // afford it.
+ if err := self.c.Refresh(types.RefreshOptions{
+ Scope: []types.RefreshableView{types.REMOTES},
+ Mode: types.SYNC,
+ }); err != nil {
+ return err
+ }
+
+ // Select the new remote
+ for idx, remote := range self.c.Model().Remotes {
+ if remote.Name == remoteName {
+ self.c.Contexts().Remotes.SetSelection(idx)
+ break
+ }
+ }
+
+ // Fetch the new remote
+ return self.fetch(self.c.Contexts().Remotes.GetSelected())
},
})
},